求解:关于实例化泛型的类型参数

泛型类
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()这个方法啊,不适用这个方法的话有没有办法实例化类型参数啊?
 
谢谢大神们赐教,小弟是菜鸟
狐的传说
浏览 490回答 1
1回答

陪伴而非守候

1.因为Test继承了Generic<Person>,这时候Generic<Person>是Test的父类,他们2个不相等的,你用的Test实例调用的GetClass,返回的自然是Test 2.问题没看明白,是说要取得T在这个实现中被指定的值Person吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java