0

我创建了 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());

    }

}
4

2 回答 2

7

List<? extends Person>意思是“一个List可以扩展的具体类型Person,但我们不知道那个具体类型实际上是什么”。据我们所知,它可能是一个List<Women>!因此,您实际上不能向此列表添加任何内容(除了null)。您可能想要:

List<Men> p1 = new ArrayList<Men>();  // a list of only Men instances

另请参阅:通配符

于 2013-10-03T14:11:11.597 回答
0

让它List<? super Men> p1 = new ArrayList<Men>();。您可以阅读有关多态性和泛型的信息

于 2013-10-03T14:11:36.973 回答