【发布时间】:2013-08-21 02:38:50
【问题描述】:
所以我一直在阅读 Oracle 提供的泛型教程:http://docs.oracle.com/javase/tutorial/java/generics/
我已经尝试运行我自己的示例以确保我了解如何使用泛型。我有以下代码:
import java.util.*;
public class Generics {
class NaturalNumber {
private int i;
public NaturalNumber(int i) { this.i = i; }
}
class EvenNumber extends NaturalNumber {
public EvenNumber(int i) {
super(i);
}
}
public static void main(String[] args) {
Collection<? extends NaturalNumber> c = new ArrayList<>();
c.add(new EvenNumber(2)); //this line produces a compile time error
}
}
我的目标是能够将作为 NaturalNumber 子类型的任何对象添加到 Collection c。我不确定为什么这不起作用,阅读 Oracle 的教程也没有启发我。
【问题讨论】:
-
请添加编译错误信息。 (我怀疑它实际上与泛型无关......)
-
本教程的哪个特定部分让您感到困惑?如果我能找出您需要帮助的部分,我也许可以提供帮助。
-
见link
-
你是用 Java 7 还是旧版本编译这个?旧版本将无法使用。
-
@David Wallace:我使用的是 Java 6。但是下面的建议解决了我的问题。