Java リフレクション メカニズムはジェネリック型をどのように処理しますか?

PHPz
リリース: 2024-05-01 22:03:01
オリジナル
669 人が閲覧しました

リフレクション メカニズムは、java.lang.reflect パッケージ内のクラスを通じてジェネリック型を処理します。 型の取得: Type インターフェイスを使用して Java 型を表します。ジェネリック パラメーターの取得: パラメーター化された型の場合、TypeVariable インターフェイスを使用してジェネリック パラメーターを取得します。型境界の取得: TypeVariable インターフェイスは、ジェネリック パラメーターの型境界を取得するメソッドを提供します。

Java リフレクション メカニズムはジェネリック型をどのように処理しますか?

#Java リフレクション メカニズムはジェネリック型をどのように処理しますか?

はじめに

Java リフレクション メカニズムを使用すると、プログラムは実行時にクラスの構造と動作を検査および変更できます。これは、クラスとオブジェクトのメタデータを反映することによって行われます。ジェネリック型の処理は型の消去を伴うため、リフレクションにとっては困難です。

型の消去

Java では、ジェネリック型はコンパイル時に消去されます。これは、ジェネリック型情報が実行時に保持されないことを意味します。例:

List myList = new ArrayList<>();
ログイン後にコピー

実行時には、myListはジェネリック型情報のないプレーンなArrayListになります。

リフレクション メカニズムとジェネリック型

リフレクション メカニズムは、java.lang.reflectパッケージ内のクラスを使用してジェネリック型を処理します。汎用型情報は、次の手順で取得できます。

  1. 型の取得:Typeインターフェイスを使用して Java 型を表します。
  2. ジェネリック パラメーターの取得:型がパラメーター化された型の場合、TypeVariableインターフェイスを使用してそのジェネリック パラメーターを取得できます。
  3. 型境界の取得:TypeVariableこのインターフェイスは、ジェネリック パラメーターの型境界を取得するメソッドを提供します。

実際的なケース

次の例は、リフレクション メカニズムを使用してジェネリック型情報を取得する方法を示しています。

import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { // 创建一个泛型类型对象 List myList = new ArrayList<>(); // 获取类型 Type type = myList.getClass().getGenericSuperclass(); // 检查类型是否为参数化类型 if (type instanceof ParameterizedType) { // 获取泛型参数 Type[] actualTypes = ((ParameterizedType) type).getActualTypeArguments(); // 打印泛型参数的类型 for (Type actualType : actualTypes) { System.out.println(actualType.getTypeName()); } } } }
ログイン後にコピー

この例では、 wemyListのジェネリック型を取得し、その型名を出力します。出力は次のとおりです:

java.lang.String
ログイン後にコピー

以上がJava リフレクション メカニズムはジェネリック型をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!