ホームページ >Java >&#&チュートリアル >リフレクションを使用して Java リストのジェネリック型を取得するにはどうすればよいですか?

リフレクションを使用して Java リストのジェネリック型を取得するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-21 15:41:18897ブラウズ

How Can I Retrieve the Generic Type of a Java List Using Reflection?

Java リストのジェネリック型の取得

Java でジェネリック型を操作する場合、ジェネリック型に関連付けられた特定のクラスを取得すると便利です。次の例を考えてみましょう。

List<String> stringList = new ArrayList<String>();
List<Integer> integerList = new ArrayList<Integer>();

このシナリオでは、これらのリストに関連付けられた実際のクラス型、つまり String と Integer にアクセスしたい場合があります。幸いなことに、Java には、リフレクションを使用してこの情報を取得する方法が用意されています。

リフレクションの使用

getDeclaredField メソッドを利用すると、汎用リストを保持するクラスのフィールドにアクセスできます。そこから、フィールドの ParameterizedType を取得し、実際のクラス情報を抽出できます。以下に例を示します。

Field stringListField = testClass.getDeclaredField("stringList");
ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType();
Class<?> stringListClass = (Class<?>) stringListType.getActualTypeArguments()[0];

このコードは Class を割り当てます。オブジェクトを stringListClass 変数に追加すると、リストのジェネリック型を判断できるようになります。同じアプローチを使用して、integerList フィールドのジェネリック型を取得できます。

代替考慮事項

リストがメソッドのスコープ内で定義されている場合、そのジェネリック型を取得する必要はありません。明示的に型を指定します。これは、型情報がメソッドのコンテキスト内ですぐに利用できるためです。

以上がリフレクションを使用して Java リストのジェネリック型を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。