只是通过Java泛型类型,但仍然没有得到它的绑定错误

时间:2013-11-03 17:51:55

标签: java generics

我有这堂课:

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传递给链。

我很感激一些建议。这令我感到困惑。谢谢。

1 个答案:

答案 0 :(得分:4)

中声明的类型参数
public class SubClass<CONE,VOBJ>

即。 ONEVOBJ没有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 ClassOneValidateValue<Object>匹配T extends ValidateValue<F>,其中FObject