为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

狐的传说 2018-12-07 08:34:22
泛型类 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吗?

查看完整回答
反对 回复 2018-12-16
  • 1 回答
  • 0 关注
  • 489 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信