我创建了两个对象:Person
和Men
(扩展Person
)。然后我创建了一个通用集合来只添加Men
个对象,但由于某种原因它不允许我添加Men对象。
class Person{
}
class Men extends Person{
}
public class test extends HashSet<Person>{
public static void main(String[] args) {
List<? extends Person> p1 = new ArrayList<Men>();
p1.add(new Men());
}
}
答案 0 :(得分:7)
List<? extends Person>
表示List
某种具体类型的Person
延伸List<Women>
,但我们不知道具体类型实际上是什么&#34;。据我们所知,它可能是null
!因此,您无法将任何添加到此列表中(List<Men> p1 = new ArrayList<Men>(); // a list of only Men instances
除外)。你可能想要:
{{1}}
另请参阅:Wildcards
答案 1 :(得分:0)
将其List<? super Men> p1 = new ArrayList<Men>();
。您可以阅读Polymorphism and generics