Java 如何获取List的泛型
时间: 2023-02-09 19:02:38 浏览: 123
在 Java 中,可以使用如下方法来获取 List 的泛型类型:
1. 使用 List 的 getClass() 方法获取 List 对象的 Class 对象,然后使用 Class 对象的 getGenericSuperclass() 方法获取 List 对象的直接超类的 Type。
2. 使用 List 的 getClass() 方法获取 List 对象的 Class 对象,然后使用 Class 对象的 getTypeParameters() 方法获取 List 对象的类型参数。
下面是示例代码:
```
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
// 获取 List 对象的 Class 对象
Class<?> clazz = list.getClass();
// 获取 List 对象的直接超类的 Type
Type type = clazz.getGenericSuperclass();
// 如果 type 是 ParameterizedType 类型,则说明它是一个带泛型的类型
if (type instanceof ParameterizedType) {
// 获取 List 对象的泛型类型
Type[] actualTypeArguments = ((ParameterizedType) type).getActualTypeArguments();
System.out.println(actualTypeArguments[0]); // 输出: class java.lang.String
}
// 获取 List 对象的类型参数
TypeVariable<?>[] typeParameters = clazz.getTypeParameters();
System.out.println(typeParameters[0].getName()); // 输出: E
}
}
```
注意,如果 List 对象是通过赋值的方式得到的,而非通过 new 运算符创建的,则无法使用以上方法获取泛型类型。例如:
```
List<String> list = new ArrayList<>();
List anotherList = list;
// 无法使用以上方法获
阅读全文