集合泛型无法添加已定义类型的对象

时间:2013-10-03 14:09:44

标签: java generics

我创建了两个对象: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());

    }

}

2 个答案:

答案 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