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