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

子类与父类范型转换的限制

子类与父类范型转换的限制

子衿沉夜 2019-02-23 13:59:32
据面向对象学习的知识,子类转父类是一定可以成功的,例如: //AHero extends Hero Hero h = new Hero(); AHero ad = new AHero(); //子类转父类 h = ad; 既然子类对象转父类对象是可以成功的,那么子类泛型转父类泛型如下代码: ArrayList<Hero> hs =new ArrayList<>(); ArrayList<AHero> adhs =new ArrayList<>(); //子类泛型转父类泛型 hs = adhs; hs的泛型是父类Heroadhs的泛型是子类AHero为啥子类与父类范型间的转换就有限制了呢?
查看完整描述

4 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

如果可以转换,那你从hs里取出来的到底是子类还是父类呢?


ArrayList<Hero> hs =new ArrayList<>();
换成
ArrayList<? extends Hero> hs =new ArrayList<>();
就可以了

查看完整回答
反对 回复 2019-03-01
?
函数式编程

TA贡献1807条经验 获得超9个赞

本质上应该是因为List<Object> list = new ArrayList<String>();编译无法通过,可能是Java的语法就不支持 List<T> list = new ArrayList<K>();

查看完整回答
反对 回复 2019-03-01
  • 4 回答
  • 0 关注
  • 450 浏览

添加回答

举报

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