反射获取list泛型_Java泛型:你一直用的泛型是伪泛型,你造么?
时间: 2023-12-19 16:58:28 浏览: 97
Java的泛型确实是伪泛型,因为在编译时期,Java的泛型会被擦除掉,只保留原始类型。但是,通过反射可以获取到list的泛型信息。具体实现方法如下:
```java
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
Type type = list.getClass().getGenericSuperclass();
if (type instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) type;
Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
Type actualTypeArgument = actualTypeArguments[0];
System.out.println(actualTypeArgument.getTypeName()); // 输出:java.lang.String
}
}
}
```
在上面的代码中,我们通过反射获取到了list的泛型信息,并输出了泛型的类型名称。需要注意的是,如果定义的是匿名内部类或者局部类,那么获取泛型信息可能会有所不同,因此需要特殊处理。
阅读全文