我创建了2个对象: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());
}
}
最佳答案
List<? extends Person>
表示“扩展了List
的某种具体类型的Person
,但我们不知道该具体类型实际上是什么”。就我们所知,它可能是List<Women>
!因此,您实际上无法在此列表中添加任何内容(null
除外)。您可能想要:
List<Men> p1 = new ArrayList<Men>(); // a list of only Men instances
另请参阅:Wildcards
关于java - 集合泛型无法添加已定义类型的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19161485/