我在阅读泛型时遇到了PECS(制片extends人和消费者的super简称).
能否给我一个人解释如何使用佩奇之间解决困惑extends和super?
来自http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#FAQ103:
具有下限的通配符看起来像"?super Type",并且代表类型的超类型的所有类型的族,包括类型Type.类型称为下限.
所以为什么
ArrayList<? super Number> psupn1 = new ArrayList<Number>();
psupn1.add(new Double(2));
Run Code Online (Sandbox Code Playgroud)
编译?
Double不是Number的超类型,而是Number的子类......
编辑1:
ArrayList<? super Number> pextn1 = new ArrayList<Number>();
psupn1.add(new Integer(2));
psupn1.add(new Double(2));
psupn1.add(new Float(2));
for(Number n : psupn1){ // [Invalid] Number should be change to
// Object even if I can only add subtype of Number??
}
Run Code Online (Sandbox Code Playgroud)