首页 >Java >java教程 >如何使用反射获取 java.util.List 的通用类型?

如何使用反射获取 java.util.List 的通用类型?

Linda Hamilton
Linda Hamilton原创
2024-12-22 21:26:17970浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn