1

我遇到在集合中使用通配符的问题。它类似于java generic and wild card中的问题,但我发现那里的回答令人困惑。可以请教吗?

问题:我想使用带有类及其子类型的集合。根据文档,我希望我必须使用它,<? extends myclass>但它不适用于它,但是如果不使用它,它可以顺利运行。为什么会这样,应该正好相反<? super myclass>超级类也一样吗?

正确的例子:

    List<Number> nl = new ArrayList<>();
    nl.add(new Integer(2));
    System.out.println("===> List<Number>.add (new Integer(2)) = " + nl.get(0));

不正确的例子:

List<? extends Number> nl = new ArrayList<>();
nl.add(new Integer(2));
System.out.println("===> List<Number>.add (new Integer(2)) = " + nl.get(0));

我会很感激你的建议。非常感谢,塔马斯

4

0 回答 0