ホームページ >Java >&#&はじめる >Java ジェネリックについて詳しく見る

Java ジェネリックについて詳しく見る

青灯夜游
青灯夜游転載
2019-11-27 18:11:471813ブラウズ

Java ジェネリックについて詳しく見る

コンセプト: ジェネリック、つまり「パラメータ化された型」。メソッド内の変数パラメータと同様に、元の特定の型をパラメータ化するものですが、このとき、型もパラメータ形式(型パラメータと呼ぶことができます)として定義し、次に特定の型(型実パラメータ)をパラメータ化します。 ) は、) を使用または呼び出すときに渡されます。

本質: 型をパラメーター化するために (新しい型を作成せずに、仮パラメーターの特定の制限の型をジェネリックスで指定されたさまざまな型を通じて制御できます)。つまり、ジェネリックの使用中に、操作のデータ型がパラメータとして指定されます。このパラメータの型はクラス、インターフェイス、メソッドで使用でき、それぞれジェネリック クラス、ジェネリック インターフェイス、ジェネリック メソッドと呼ばれます。 。

3 つの使用方法: ジェネリック クラス、ジェネリック インターフェイス、ジェネリック メソッド

タイプ ワイルドカード:

1 ) タイプ ワイルドカード一般的に使われているのですか?具体的な型パラメータの代わりに。たとえば、List は、論理的には List、List、およびすべての List<具体的な型の実パラメータ> の親クラスです。

2) タイプ ワイルドカードはリストの形式で定義されます。この定義は、ワイルドカードのジェネリック値が Number とその基礎となるサブクラス タイプを受け入れることを意味します。

ジェネリクスは、コンパイル時の型安全性監視メカニズムを提供します。これにより、プログラマはコンパイル時に不正な型を検出できます。ジェネリックスの本質はパラメーター化された型です。これは、操作対象のデータ型がパラメーターとして指定されることを意味します。たとえば、整数配列、文字列配列、またはその他の種類の配列を並べ替えることができる並べ替えメソッドを作成したい場合は、Java ジェネリックを使用できます。

1. ジェネリック メソッド

呼び出し時にさまざまな種類のパラメーターを受け取ることができるジェネリック メソッドを作成できます。ジェネリック メソッドに渡されるパラメーターの型に応じて、コンパイラーは各メソッド呼び出しを適切に処理します。

// 泛型方法 printArray 
     public static < E > void printArray( E[] inputArray )
     { 
         for ( E element : inputArray ){ 
             System.out.printf( "%s ", element );
         }
     }

1) は、ワイルドカードで表される型が T 型のサブクラスであることを示します。

2) は、ワイルドカードで表される型が型 T の親クラスであることを意味します。

2. ジェネリック クラス

ジェネリック クラスの宣言は、型パラメーターの宣言が次のとおりである点を除いて、非ジェネリック クラスの宣言と似ています。クラス名部分の後に追加します。ジェネリック メソッドと同様に、ジェネリック クラスの型パラメーター宣言部分にも、コンマで区切られた 1 つ以上の型パラメーターが含まれます。ジェネリック パラメーターは型変数とも呼ばれ、ジェネリック型の名前を指定する識別子です。これらのクラスは 1 つ以上のパラメーターを受け入れるため、パラメーター化されたクラスまたはパラメーター化された型と呼ばれます。

public class Box<T> {
     private T t;
     public void add(T t) {
         this.t = t;
     }
     public T get() {
         return t;
 }

3. 型消去

Java のジェネリックスは、基本的にコンパイラ レベルで実装されます。ジェネリックスの型情報は、生成される Java バイトコードには含まれません。 ジェネリックスを使用するときに追加された型パラメーターは、コンパイル中にコンパイラーによって削除されます。このプロセスは型消去と呼ばれます。 コード内で定義された List や List などの型は、コンパイル後に List になります。 JVM が認識できるのはリストのみであり、ジェネリックによって付加された型情報は JVM には見えません。 型消去の基本プロセスも比較的単純です。最初は、型パラメータを置き換えるのに使用される特定のクラスを見つけます。この特定のクラスは通常、オブジェクトです。型パラメーターの上限が指定されている場合、この上限を使用して、コード内のすべての型パラメーターが具象クラスに置き換えられます。

この記事は java Getting Started 列から抜粋したものです。ぜひ学習してください。

以上がJava ジェネリックについて詳しく見るの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。