为什么我们不能做List<Parent> mylist = ArrayList<child>();
3 回答

繁花不似锦
TA贡献1851条经验 获得超4个赞
因为它们不是同一类型。假设您有另一个子类Parent
(Child2
出于参数考虑),则可以将的实例Child2
放入List<Parent>
,但类型不正确则将其放入的实例List<Child>
。协变继承确实令人头疼,并且仅在Java中才支持数组类型(在数组中可能会引起奇怪的问题)。

泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
应该是这样,因为我们可以这样做:父A = new Child();
编辑:等待,实际上它起作用:
List<Parent> list = new ArrayList<Parent>();
List<ChildA> tmp = new ArrayList<ChildA>();
list.addAll(tmp);
List<ChildB> tmp2 = new ArrayList<ChildB>();
list.addAll(tmp2);
只是不支持直接投射。
添加回答
举报
0/150
提交
取消