泛型类
public class Generic<T>{
private Class<T> persistentClass;
public Generic(){
System.out.println(this.getClass()); System.out.println(this.getClass().getGenericSuperclass());
this.persistentClass = ((Class<T>) ((ParameterizedType) this.getClass() .getGenericSuperclass()).getActualTypeArguments()[0]);
}
}
测试类
public class Test extends Generic<Person>{
public static void main(String[] args) { Test test= new Test(); }
}
问题:
1、第一行输出的结果为什么会是 Test 而不是Generic
2、谁能告诉我实例化类型参数的那行代码为什么要使用getGenericSuperclass()这个方法啊,不适用这个方法的话有没有办法实例化类型参数啊?
谢谢大神们赐教,小弟是菜鸟
1 回答
陪伴而非守候
TA贡献1757条经验 获得超8个赞
1.因为Test继承了Generic<Person>,这时候Generic<Person>是Test的父类,他们2个不相等的,你用的Test实例调用的GetClass,返回的自然是Test
2.问题没看明白,是说要取得T在这个实现中被指定的值Person吗?
添加回答
举报
0/150
提交
取消