使用java 从泛型获取属性
时间: 2023-08-14 07:05:09 浏览: 97
您可以使用反射来获取泛型中的属性。以下是示例代码:
```java
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
public class GenericClass<T> {
private List<T> list;
public void printListType() {
Type type = getClass().getGenericSuperclass();
ParameterizedType paramType = (ParameterizedType) type;
Type[] argTypes = paramType.getActualTypeArguments();
Class<?> argClass = (Class<?>) argTypes[0];
Field[] fields = argClass.getDeclaredFields();
for (Field field : fields) {
System.out.println(field.getType() + " " + field.getName());
}
}
}
public class Main {
public static void main(String[] args) {
GenericClass<String> genericClass = new GenericClass<>();
genericClass.printListType();
}
}
```
在上面的代码中,我们定义了一个 `GenericClass` 类,它带有一个泛型列表 `list`。在 `printListType` 方法中,我们使用 `getClass().getGenericSuperclass()` 方法获取泛型类型,并使用 `ParameterizedType` 对象获取泛型参数类型。然后,我们使用 `argClass.getDeclaredFields()` 方法获取 `argClass` 类中的所有属性。最后,我们循环遍历这些属性并打印它们的类型和名称。
阅读全文