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
-类。(例如,将classD
中的函数应用于数组中的所有项。)
然后我是否应该再次约束该类型
换句话说:这些选项中哪一个是可以选择的
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 { ... }