Java 使用内部类类型扩展类



我有以下示例代码,并在最后一行生成"类型参数不在其边界内"错误。类 C/D 通过继承重用了 A/B 中的大量代码。我如何将类 Y 定义为没有错误并且仍然使用类 D 作为类型参数?有没有办法定义 D 类以使用 A.B,但仍然具有 D 的签名扩展 S 对于类 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>

最新更新