ホームページ >Java >&#&チュートリアル >リフレクションを使用して Java `List` のジェネリック型を取得する方法
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 サイトの他の関連記事を参照してください。