java获取某个类中集合属性的泛型数据类型
时间: 2023-10-19 13:27:49 浏览: 86
在Java中,要获取某个类中集合属性的泛型数据类型,可以使用Java反射机制中的Type接口和ParameterizedType接口。
假设我们有一个类Person,其中有一个List类型的属性:
```
public class Person {
private List<String> hobbies;
public List<String> getHobbies() {
return hobbies;
}
public void setHobbies(List<String> hobbies) {
this.hobbies = hobbies;
}
}
```
要获取hobbies属性的泛型数据类型,可以使用以下代码:
```
Field field = Person.class.getDeclaredField("hobbies");
Type type = field.getGenericType();
if (type instanceof ParameterizedType) {
ParameterizedType pType = (ParameterizedType) type;
Type[] actualTypeArguments = pType.getActualTypeArguments();
if (actualTypeArguments != null && actualTypeArguments.length > 0) {
Class<?> clazz = (Class<?>) actualTypeArguments[0];
System.out.println(clazz.getName());
}
}
```
这段代码首先通过反射获取到Person类中的hobbies属性,然后通过属性的getGenericType()方法获取到属性的类型信息。如果类型是ParameterizedType,说明属性是带有泛型的集合类型,可以通过ParameterizedType接口获取到泛型的实际类型参数。在本例中,hobbies属性的泛型实际类型参数是String,通过clazz.getName()方法可以获取到该类型的类名。