我有这门课:
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 传递到链上。
我会很感激一些建议。这让我很困惑。谢谢。
最佳答案
声明的类型参数
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
.
关于java - 只是通过 Java 泛型类型,但仍然出现 not-within-its-bound 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19756010/