Java 获取List的泛型类型

以你之姓@ 2023-02-27 12:28 69阅读 0赞
  1. import java.lang.reflect.Field;
  2. import java.lang.reflect.ParameterizedType;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.stream.Stream;
  6. public class Test {
  7. public static void main(String[] args) throws NoSuchFieldException {
  8. Class clazz = A.class;
  9. Field field = clazz.getField("list");
  10. ParameterizedType type = (ParameterizedType) field.getGenericType();
  11. Stream.of(type.getActualTypeArguments()).forEach(System.out::println);
  12. field = clazz.getField("list1");
  13. type = (ParameterizedType) field.getGenericType();
  14. Stream.of(type.getActualTypeArguments()).forEach(System.out::println);
  15. }
  16. class A {
  17. public List<? extends String> list = new ArrayList<>();
  18. public List<Integer> list1 = new ArrayList<>();
  19. }
  20. }

结果:

? extends java.lang.String
class java.lang.Integer

发表评论

表情:
评论列表 (有 0 条评论,69人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java获取类型信息

    根据使用泛型位置的不同可以分为:声明侧泛型、使用侧泛型。 声明侧的泛型信息被记录在Class文件的Constant pool中以Signature的形式保存。而使用侧的泛型信