怎么获取List的泛型类型
时间: 2024-03-11 13:47:04 浏览: 28
在Java中,可以通过反射机制获取List的泛型类型。具体来说,可以通过调用List的getClass()方法获取List的Class对象,然后通过Class对象的getGenericInterfaces()方法获取List的泛型类型信息,再通过ParameterizedType的getActualTypeArguments()方法获取List的实际类型参数。以下是一个示例代码:
```
List<String> list = new ArrayList<>();
Type type = list.getClass().getGenericInterfaces()[0];
if (type instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) type;
Type[] actualTypeArguments = pt.getActualTypeArguments();
if (actualTypeArguments.length > 0) {
Class<?> clazz = (Class<?>) actualTypeArguments[0];
System.out.println(clazz.getName()); // 输出 "java.lang.String"
}
}
```
在上面的示例代码中,首先创建了一个List<String>对象。然后通过调用getClass()方法获取List的Class对象,再通过getGenericInterfaces()方法获取List的泛型类型信息。由于List实现的是List接口,因此获取到的泛型类型信息是一个ParameterizedType对象。接着通过ParameterizedType的getActualTypeArguments()方法获取List的实际类型参数,即String类型。最后输出String类型的类名。