ホームページ >Java >&#&チュートリアル >リフレクションを使用して Java `List` のジェネリック型を取得する方法

リフレクションを使用して Java `List` のジェネリック型を取得する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-23 13:08:18726ブラウズ

How to Retrieve the Generic Type of a Java `List` Using Reflection?

Java.util.List のジェネリック型の取得

Java では、ジェネリック型パラメータを使用してクラスまたはインターフェイスを操作できます。さまざまな種類のデータ。たとえば、List には任意のタイプの要素を格納できます。 List のジェネリック型にアクセスするには、Java リフレクションを利用できます。

リフレクションを使用してジェネリック型を取得する

Field クラスの getGenericType() メソッドは戻り値を返します。フィールドのジェネリック型。リスト フィールドの場合、これは ParameterizedType です。実際のジェネリック型を抽出するには、ParameterizedType をリストの型にキャストします。

次のコードは、リフレクションを使用してリストのジェネリック型を取得する方法を示しています。

import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.List;

public class GetGenericType {

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

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

        Field stringListField = clazz.getDeclaredField("stringList");
        ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType();
        Class<?> stringListClass = stringListType.getActualTypeArguments()[0];
        System.out.println(stringListClass); // class java.lang.String

        Field integerListField = clazz.getDeclaredField("integerList");
        ParameterizedType integerListType = (ParameterizedType) integerListField.getGenericType();
        Class<?> integerListClass = integerListType.getActualTypeArguments()[0];
        System.out.println(integerListClass); // class java.lang.Integer
    }
}

この例では、たとえば、getGenericType() メソッドは、ParameterizedType のインスタンスである stringList および integerList フィールドのジェネリック タイプを取得するために使用されます。これらの型の getActualTypeArguments() メソッドにアクセスすると、実際のジェネリック型が返され、それぞれ String と Integer として出力されます。

リフレクションはコストがかかる可能性があるため、必要な場合にのみ使用する必要があることに注意してください。コードのコンテキストにおいて、stringList と integerList のジェネリック型がすでに既知であるか、現在のスコープで推論できる場合は、リフレクションを使用する必要はありません。ただし、コンパイル時に動的に作成されるジェネリック型や不明なジェネリック型を操作する場合、リフレクションは便利です。

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

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