Java 当类具有有界类型参数时使用有界通配符

Java 当类具有有界类型参数时使用有界通配符,java,generics,bounded-wildcard,bounded-types,Java,Generics,Bounded Wildcard,Bounded Types,假设我有一节课 public static class A<T extends D> { ... } 现在,在某个地方,让我们假设我想要一个A的数组,不管是B-类还是C-类。(例如,将classD中的函数应用于数组中的所有项。) 然后我是否应该再次约束该类型 换句话说:这些选项中哪一个是可以选择的 A[]re A根据我的说法,你应该选择A因为T有D的上界,A只是A的简写,它是A的缩写,因为它很简洁,尽管AIt不允许“任何对象”,因为A类型的对象,其中E没有扩展D,没有有效的类型!它

假设我有一节课

public static class A<T extends D> { ... }
现在,在某个地方,让我们假设我想要一个
A
的数组,不管是
B
-类还是
C
-类。(例如,将class
D
中的函数应用于数组中的所有项。)

然后我是否应该再次约束该类型

换句话说:这些选项中哪一个是可以选择的

  • A[]re


  • A根据我的说法,你应该选择
    A因为
    T
    D
    的上界,
    A
    只是
    A
    的简写,它是
    A
    的缩写,因为它很简洁,尽管
    AIt不允许“任何对象”,因为
    A
    类型的对象,其中
    E
    没有扩展
    D
    ,没有有效的类型!它会在编译时导致绑定不匹配错误。
    re=newa[2];re[0]=新的A();re[1]=新的A()不需要显式强制转换。那么,根据你的说法,什么时候需要它呢?请改写你的第二句话。这似乎是错误的,我不知道你想说什么。还请注意,我的问题是关于有界通配符时,引用有界类型参数。因此,可以传递的类型已经是有界的,我们已经可以访问
    A
    (和
    D
    )中声明的方法。
    public static class D { ... }
    public static class B extends D { ... }
    public static class C extends D { ... }