java封装类获取泛型
时间: 2023-10-18 19:25:25 浏览: 121
要在 Java 中获取泛型的类型信息,可以使用反射机制。
首先,需要定义一个封装类,该类包含一个泛型变量:
```java
public class GenericClass<T> {
private T data;
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
```
接下来,可以使用反射来获取泛型的类型信息。例如,假设我们有一个 `GenericClass` 的对象 `genericObj`:
```java
GenericClass<String> genericObj = new GenericClass<>();
// 获取泛型的类型
Type genericType = genericObj.getClass().getGenericSuperclass();
if (genericType instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) genericType;
Type actualType = parameterizedType.getActualTypeArguments()[0];
// 打印泛型的类型
System.out.println(actualType.getTypeName());
}
```
在上面的示例中,我们使用 `getClass().getGenericSuperclass()` 方法获取当前对象的父类信息,然后判断是否是 `ParameterizedType` 的实例。如果是,则可以通过 `getActualTypeArguments()` 方法获取到实际的泛型参数类型。在这个示例中,我们只有一个泛型参数,所以使用 `` 来获取第一个泛型参数类型。
以上代码将打印出 `java.lang.String`,表示泛型参数的类型是 `String`。
需要注意的是,由于 Java 的泛型信息在编译时被擦除了,所以只能在运行时通过反射来获取泛型的类型信息。