1

我有这堂课:

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

我会很感激一些建议。这让我很困惑。谢谢你。

4

1 回答 1

4

中声明的类型参数

public class SubClass<CONE,VOBJ>

IE。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 ClassOneValidateValue<Object>匹配T extends ValidateValue<F>where Fis Object

于 2013-11-03T17:54:23.610 回答