Java 使用内部 class 类型扩展 class
Java extends class with inner class type
我有以下示例代码并在最后一行产生了 "type parameter is not within its bound" 错误。 Class C/D 通过继承重用了 A/B 中的大量代码。我如何定义 class Y 没有错误并且仍然使用 class D 作为类型参数?有没有一种方法可以定义 class D 以使用 A.B 但仍然具有 D extends S for class Y 的签名?
public abstract class S<E extends S<E>> extends somethingElse {}
public abstract class R<E extends S<E>> {}
public class A extends Z {
public class B extends S<B> {
}
}
public class C extends A {
public class D extends A.B {
}
}
public class X extends R<B> {} // OK
public class Y extends R<D> {} // Error: Type parameter D is not within its bound; should extends S<D>
如有任何帮助,我们将不胜感激。
要编译它,你可以将 E extends S<E>
更改为 E extends S<? super E>
:
public abstract class R<E extends S<? super E>> {}
这个问题的原因和我今天早些时候回答的类似。
没有有界通配符,D
扩展了 S<B>
而不是 S<D>
。
我有以下示例代码并在最后一行产生了 "type parameter is not within its bound" 错误。 Class C/D 通过继承重用了 A/B 中的大量代码。我如何定义 class Y 没有错误并且仍然使用 class D 作为类型参数?有没有一种方法可以定义 class D 以使用 A.B 但仍然具有 D extends S for class Y 的签名?
public abstract class S<E extends S<E>> extends somethingElse {}
public abstract class R<E extends S<E>> {}
public class A extends Z {
public class B extends S<B> {
}
}
public class C extends A {
public class D extends A.B {
}
}
public class X extends R<B> {} // OK
public class Y extends R<D> {} // Error: Type parameter D is not within its bound; should extends S<D>
如有任何帮助,我们将不胜感激。
要编译它,你可以将 E extends S<E>
更改为 E extends S<? super E>
:
public abstract class R<E extends S<? super E>> {}
这个问题的原因和我今天早些时候回答的
没有有界通配符,D
扩展了 S<B>
而不是 S<D>
。