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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-22 21:26:171018ブラウズ

How to Get the Generic Type of a java.util.List using Reflection?

java.util.List のジェネリック型を取得する方法

指定された java.util.List のジェネリック型を取得するには前述のリスト インスタンスがクラス内のフィールドである場合、リフレクション手法を使用できます。その方法は次のとおりです。

// Declare fields of type List<String> and List<Integer>
List<String> stringList = new ArrayList<>();
List<Integer> integerList = new ArrayList<>();

public static void main(String[] args) throws Exception {
    Class<Test> testClass = Test.class;

    // Obtain the Field object of the stringList field
    Field stringListField = testClass.getDeclaredField("stringList");
    // Determine the generic type of stringList using ParameterizedType
    ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType();
    // Retrieve the actual type argument (i.e., generic type) of stringListType
    Class<?> stringListClass = stringListType.getActualTypeArguments()[0];
    System.out.println(stringListClass); // class java.lang.String

    // Perform the same process for the integerList field
    Field integerListField = testClass.getDeclaredField("integerList");
    ParameterizedType integerListType = (ParameterizedType) integerListField.getGenericType();
    Class<?> integerListClass = integerListType.getActualTypeArguments()[0];
    System.out.println(integerListClass); // class java.lang.Integer
}

このアプローチは、パラメーターの型とメソッドの戻り値の型にも適用できます。ただし、List インスタンスが必要なクラスまたはメソッドのスコープ内にある場合は、ジェネリック型が明示的に宣言されているため、リフレクションを使用する必要がないことに注意することが重要です。

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

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