当写一个通用的泛型类,想得到实现类的泛型参数的类型时候,可以用这种
class User {
}
class parent<T> {
protected Class<T> clazz;
// 在这里想得到T的对象
parent() {
ParameterizedType parent = (ParameterizedType) this.getClass().getGenericSuperclass();// 接下来想要获取参数化类型信息,需要将Type类型强转成ParameterizedType类型
Type[] types = parent.getActualTypeArguments();
clazz = (Class<T>) types[0];
System.out.println(clazz.getSimpleName());
}
}
测试代码:
public class Demo {
public static void main(String[] args) {
new Child();
}
}
class Child extends parent<User> {
}
运行结果为User