【发布时间】:2011-12-26 08:39:08
【问题描述】:
来自http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#FAQ103:
具有下限的通配符看起来像“? super 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??
}
【问题讨论】: