Java ジェネリクス
ジェネリクスは、コンパイル時の型安全性検出メカニズムを提供し、プログラマが不正な型を検出できるようにします。ジェネリックスの本質はパラメーター化された型です。これは、操作対象のデータ型がパラメーターとして指定されることを意味します。
たとえば、整数配列、文字列配列、またはその他のタイプの配列をソートできるソート メソッドを作成したい場合は、Java ジェネリックスを使用できます。
無料のオンライン学習ビデオの推奨: java オンライン ビデオ
1. 汎用メソッド
汎用メソッドを作成できます。呼び出されたときにさまざまなタイプのパラメータを受け取ることができます。ジェネリック メソッドに渡されるパラメーターの型に応じて、コンパイラーは各メソッド呼び出しを適切に処理します。
例:
public static < E > void printArray( E[] inputArray ){ for ( E element : inputArray ){ System.out.printf( "%s ", element ); } }
汎用境界
(1) extends T> は、ワイルドカードで表される型が次の型であることを示します。 T サブクラス。
(2) super T> は、ワイルドカードで表される型が 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. ワイルドカードを入力しますか?
ワイルドカードを入力するには、通常、特定の型パラメータの代わりに ? を使用します。たとえば、List> は、論理的には List、List、およびすべての List<具体的な型の実パラメータ> の親クラスです。
4. 型消去
Java のジェネリックスは、基本的にコンパイラ レベルで実装されます。ジェネリックスの型情報は、生成される Java バイト コードには含まれません。ジェネリックスの使用時に追加された型パラメーターは、コンパイル中にコンパイラーによって削除されます。このプロセスは型の消去と呼ばれます。
コード内で定義された List や List などの型は、コンパイル後に List になります。 JVM が認識できるのはリストだけであり、ジェネリックによって付加された型情報は JVM には見えません。
型消去の基本プロセスも比較的単純で、最初のステップは、型パラメーターの置換に使用される特定のクラスを見つけることです。この具象クラスは通常、Object です。型パラメータの上限が指定されている場合は、この上限が使用されます。コード内のすべての型パラメータを特定のクラスに置き換えます。
Java 関連記事チュートリアル: Java 言語の概要
以上がJava ジェネリックの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。