【发布时间】:2018-06-28 18:38:16
【问题描述】:
在下面的代码 sn-p 中,它在第 2 行给出编译错误,但在第 3 行没有。
List<? extends Object> list1 = new ArrayList<>(); // line 1
list1.add("123"); // line 2
List<? extends Object> list2 = Arrays.asList("123", new Integer(12)); // line 3
如果语言设计者已经决定,不允许将元素添加到元素类型 <? extends T> 的集合中,那么它也应该适用于第 3 行。
造成这种差异的原因可能是什么?
请澄清。
【问题讨论】:
-
list2 初始化后就不会添加了
-
将代码更改为
List<Object> list1 = new ArrayList<>();,然后添加您喜欢的任何内容。