ホームページ  >  記事  >  Java  >  Java ジェネリックの詳細な紹介

Java ジェネリックの詳細な紹介

王林
王林転載
2019-11-27 16:30:491911ブラウズ

Java ジェネリックの詳細な紹介

Java ジェネリクス

ジェネリクスは、コンパイル時の型安全性検出メカニズムを提供し、プログラマが不正な型を検出できるようにします。ジェネリックスの本質はパラメーター化された型です。これは、操作対象のデータ型がパラメーターとして指定されることを意味します。

たとえば、整数配列、文字列配列、またはその他のタイプの配列をソートできるソート メソッドを作成したい場合は、Java ジェネリックスを使用できます。

無料のオンライン学習ビデオの推奨: java オンライン ビデオ

1. 汎用メソッド

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

例:

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

汎用境界

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

(2)117c5a0bdb71ea9a9d0c2b99b03abe3e は、ワイルドカードで表される型が 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. ワイルドカードを入力しますか?

ワイルドカードを入力するには、通常、特定の型パラメータの代わりに ? を使用します。たとえば、List6b3d0130bba23ae47fe2b8e8cddf0195 は、論理的には List、List、およびすべての List8e4a42b25090f2d9d55ce057d46e5cc5 の親クラスです。

4. 型消去

Java のジェネリックスは、基本的にコンパイラ レベルで実装されます。ジェネリックスの型情報は、生成される Java バイト コードには含まれません。ジェネリックスの使用時に追加された型パラメーターは、コンパイル中にコンパイラーによって削除されます。このプロセスは型の消去と呼ばれます。

コード内で定義された List や List などの型は、コンパイル後に List になります。 JVM が認識できるのはリストだけであり、ジェネリックによって付加された型情報は JVM には見えません。

型消去の基本プロセスも比較的単純で、最初のステップは、型パラメーターの置換に使用される特定のクラスを見つけることです。この具象クラスは通常、Object です。型パラメータの上限が指定されている場合は、この上限が使用されます。コード内のすべての型パラメータを特定のクラスに置き換えます。

Java 関連記事チュートリアル: Java 言語の概要

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

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