怎么获取泛型类型
时间: 2023-07-23 20:05:57 浏览: 137
在 Java 中,可以使用反射机制来获取泛型类型。具体来说,可以通过调用 Class 类的 getGenericSuperclass() 方法来获取带有泛型参数的父类类型,然后再通过 ParameterizedType 接口的 getActualTypeArguments() 方法获取实际的泛型参数类型。
例如,假设有一个类 GenericClass<T>,可以通过以下代码获取 T 的类型:
```
import java.lang.reflect.*;
public class GenericClass<T> {
private Class<T> type;
public GenericClass() {
Type superClass = getClass().getGenericSuperclass();
if (superClass instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) superClass;
Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
type = (Class<T>) actualTypeArguments[0];
}
}
public Class<T> getType() {
return type;
}
}
```
然后,在实例化 GenericClass 的子类时,可以获取泛型类型的 Class 对象,如下所示:
```
public class StringGenericClass extends GenericClass<String> {
public static void main(String[] args) {
StringGenericClass stringGenericClass = new StringGenericClass();
System.out.println(stringGenericClass.getType()); // 输出 class java.lang.String
}
}
```
阅读全文