来自http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#FAQ103:
带有下限的通配符形式为“?super Type”,代表所有类型家族,这些类型都是Type的超类型,包括Type类型本身。Type被称为下限。
所以为什么呢?
ArrayList<? super Number> psupn1 = new ArrayList<Number>();
psupn1.add(new Double(2));
编译?
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??
}