我创建了2个对象:PersonMen(扩展了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/

10-10 04:46