我遇到在集合中使用通配符的问题。它类似于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));
我会很感激你的建议。非常感谢,塔马斯