import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class Test {
public static void main(String[] args) throws NoSuchFieldException {
Class clazz = A.class;
Field field = clazz.getField("list");
ParameterizedType type = (ParameterizedType) field.getGenericType();
Stream.of(type.getActualTypeArguments()).forEach(System.out::println);
field = clazz.getField("list1");
type = (ParameterizedType) field.getGenericType();
Stream.of(type.getActualTypeArguments()).forEach(System.out::println);
}
class A {
public List<? extends String> list = new ArrayList<>();
public List<Integer> list1 = new ArrayList<>();
}
}
结果:
extends java.lang.String
class java.lang.Integer
该博客展示了如何使用Java反射API获取类中字段的泛型信息,特别是`ParameterizedType`的使用,以获取`List`类型的实际类型参数,例如`? extends String`和`Integer`。
711

被折叠的 条评论
为什么被折叠?



