【发布时间】:2015-12-13 09:13:51
【问题描述】:
在下面的Java代码中,我创建了一个列表nums。我可以在声明期间分配另一个列表。但是除了null 之外,不能添加新项目。那么,这是否意味着nums 是只读的? 为什么?是否可以在该列表中添加新项目?
List<Integer> ints = new ArrayList<Integer>();
ints.add(1);
ints.add(2);
List<? extends Number> nums = ints;
nums.add(3.14); //Generates error
nums.addAll(ints); //Generates error
nums.add(null); //works
System.out.println(nums.get(0)); //works
我已经通过了这个link。我找不到确切的原因。
【问题讨论】:
-
我不知道,注意 nums.add((Number) new Double(3.14));导致错误: List
不适用于参数 (Number) -
这是一个很常见的误解;但这个概念在大多数情况下都有效:)
标签: java generics null generic-list readonly-collection