我有这堂课:
public abstract class SuperClass<
CONE extends ClassOne,
OBJ,
VOBJ extends ValidateValue<OBJ>>
我试图用这个扩展:
public class SubClass<CONE,VOBJ>
extends SuperClass<CONE,Object,VOBJ> {
但是我得到了这两个错误。
type parameter CONE is not within its bound
public class SubClass<CONE,VOBJ> extends SuperClass<CONE,Object,VOBJ> {
type parameter VOBJ is not within its bound
public class SubClass<CONE,VOBJ> extends SuperClass<CONE,Object,VOBJ> {
如果我将SubClass更改为:
public class SubClass
extends SuperClass<ClassOne,Object,ValidateValue<Object>> {
它汇编得很好。
这对我来说毫无意义,因为我只是简单地将CONE和VOBJ传递给链。
我很感激一些建议。这令我感到困惑。谢谢。
答案 0 :(得分:4)
中声明的类型参数
public class SubClass<CONE,VOBJ>
即。 ONE
和VOBJ
没有SuperClass
期望的边界,因此不能用作父类的类型参数。它需要
public class SubClass<CONE extends ClassOne, VOBJ extends ValidateValue<Object>>>
extends SuperClass<CONE, Object, VOBJ> {
...
}
在你的宣言中有效
public class SubClass
extends SuperClass<ClassOne,Object,ValidateValue<Object>> {
您正在传递与绑定匹配的类型参数。 ClassOne
匹配T extends ClassOne
和ValidateValue<Object>
匹配T extends ValidateValue<F>
,其中F
为Object
。