获取集合实际的范型参数
时间: 2024-10-22 08:13:42 浏览: 17
数组、集合对象和范型
在Java中,如果你已经创建了一个泛型集合(如List、Set或Map),你可以通过类型擦除(Type Erasure)特性获取到它的实际泛型参数。然而,由于编译期类型信息丢失,通常你需要借助反射API或者特殊的注解来间接地获取。
1. 使用`Class<T>`:你可以获取到集合的实际类型参数T,但需要通过`getGenericSuperclass()`或`getComponentType()`方法来访问泛型类型。例如:
```java
List<String> list = new ArrayList<>();
Class<?> genericType = list.getClass().getGenericSuperclass();
Type componentType = genericType.getActualTypeArguments()[0];
```
这里的`componentType`就是`String.class`。
2. 使用`ParameterizedType`: 如果你知道集合是一个已知泛型类,可以直接通过`ParameterizedType`获取:
```java
ParameterizedType parameterizedType = (ParameterizedType) list.getClass();
Type actualTypeArgument = parameterizedType.getActualTypeArguments()[0];
```
阅读全文