相关疑难解决方法(0)

什么是PECS(制作人扩展消费者超级)?

我在阅读泛型时遇到了PECS(制片extends人和消费者的super简称).

能否给我一个人解释如何使用佩奇之间解决困惑extendssuper

java generics super pecs bounded-wildcard

680
推荐指数
11
解决办法
9万
查看次数

ArrayList <?超级数字>和双倍

来自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)

java generics

5
推荐指数
2
解决办法
1521
查看次数

标签 统计

generics ×2

java ×2

bounded-wildcard ×1

pecs ×1

super ×1