返回信息流求大神赐教啊, 如图
这是一条镜像帖。来源:北邮人论坛 / java / #56082同步于 2017/4/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
小弟在刷题时遇到一个问题, 恳请版上的伙伴们帮忙解答
heygirl
2017/4/29镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
java中泛型不是协变的。A是B的父类,但是List<A>和List<B>不存在继承关系。
假设
A -> B List<Integer> list = new ArrayList<Integer>();
f1(A) 不能指向 f1(B) ArrayList<List<Integer>> al = new ArrayList<ArrayList<Integer>>(); //编译不通过
f1(A) 可以指向 f2(A) List<List<Integer>> res = new ArrayList<List<Integer>>(); //编译通过
f1(A) 不能指向 f2(B) List<List<Integer>> res = new ArrayList<ArrayList<Integer>>(); //编译不通过,List<List<Integer>>和ArrayList<ArrayList<Integer>>不存在关系。。。
写的很槽糕,别吐槽。。。
好像在effective java中说到为什么JAVA的泛型不设计成协变的。。
所以听暖神的 List<List<Integer>> res = new ArrayList<>();//1.7以后支持了
是啊这样确实是最简单快捷的, 但是还是想弄清楚
【 在 nuanyangyang 的大作中提到: 】
: 认真解释太麻烦了。直接new ArrayList<>()吧。
谢谢, 好歹算是明白问题出在哪里了
【 在 vampire24 的大作中提到: 】
: java中泛型不是协变的。A是B的父类,但是List<A>和List<B>不存在继承关系。
: 假设
: A -> B List<Integer> list = new ArrayList<Integer>();
: ...................
简单滴说,你往马身上添加一撮黑毛,它还是马;但是如果你往白马身上添加一撮黑毛,它就不再是白马了。如果白马是马的话,为什么马允许插入黑毛,而白马就不允许插入黑毛呢?子类难道不应该支持父类的所有操作吗?
【 在 heygirl 的大作中提到: 】
: