【发布时间】:2013-06-30 05:55:20
【问题描述】:
我是 Java 泛型的新手,我目前正在尝试使用泛型编码......最终目标是将旧的非泛型遗留代码转换为泛型......
我用 IS-A 定义了两个类,即一个是另一个的子类。
public class Parent {
private String name;
public Parent(String name) {
super();
this.name = name;
}
}
public class Child extends Parent{
private String address;
public Child(String name, String address) {
super(name);
this.address = address;
}
}
现在,我正在尝试使用有界通配符创建一个列表。并得到编译器错误。
List<? extends Parent> myList = new ArrayList<Child>();
myList.add(new Parent("name")); // compiler-error
myList.add(new Child("name", "address")); // compiler-error
myList.add(new Child("name", "address")); // compiler-error
有点困惑。请帮我看看这有什么问题?
【问题讨论】:
-
myList.add(new Parent("name")); // compiler-error这不起作用,因为您声明了一个 Child 列表,但添加了一个 parent .. 它不具备成为 Child 所需的某些特征(在您的情况下为地址)。此外,@sanbhat 下面的回答可以解决您的问题。
标签: java generics collections