java获取指定泛型的class
时间: 2024-01-29 19:03:49 浏览: 80
Java如何获取泛型类型
可以使用Java的反射机制获取指定泛型的Class。具体实现代码如下:
```
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class GenericClass<T> {
private Class<T> clazz;
public GenericClass() {
// 获取泛型类型
Type genericType = getClass().getGenericSuperclass();
if (genericType instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) genericType;
Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
clazz = (Class<T>) actualTypeArguments[0];
}
}
public Class<T> getGenericClass() {
return clazz;
}
}
```
以上代码中,我们定义了一个泛型类GenericClass<T>,在构造方法中通过反射获取泛型类型,并将其转换为Class<T>类型。这样,我们就可以通过调用getGenericClass()方法获取泛型类型的Class了。使用示例代码如下:
```
public class Test {
public static void main(String[] args) {
GenericClass<String> genericClass = new GenericClass<String>() {};
Class<String> stringClass = genericClass.getGenericClass();
System.out.println(stringClass.getName());
}
}
```
以上代码中,我们创建了一个GenericClass<String>的匿名子类,并调用getGenericClass()方法获取String类型的Class。输出结果为java.lang.String。
阅读全文