【发布时间】:2011-11-25 05:17:13
【问题描述】:
给出来自the generics tutorial的这个例子。
List<String> list = new ArrayList<>();
list.add("A");
// The following statement should fail since addAll expects
// Collection<? extends String>
list.addAll(new ArrayList<>());
为什么最后一行没有编译,当它似乎应该编译时。第一行使用了一个非常相似的结构并且编译没有问题。
请详细解释。
【问题讨论】:
-
"为什么以下不起作用?"有点弱。你到底期待什么?错误信息是什么? “它不起作用”的原因有很多。您应该更准确地回答问题以获得准确的答案。
-
实际上,从 Java 7 开始,这应该可以工作 -
diamond operator,也投票支持重新开放。 -
Pradeep,您使用的是 Java 7 吗?这是编译的先决条件。
-
@PradeepKumar:如果您不使用 Java 7,那么 那 就是您的代码无法编译的原因:本教程是针对 Java 7。但是您引用的特定代码甚至无法在 Java 7 上编译(出于其他原因)。
标签: java generics java-7 diamond-operator