我有以下示例代碼,并在最后一行產生“類型參數不在其范圍內”錯誤。C/D 類通過繼承重用了 A/B 中的大量代碼。我如何定義 Y 類才能不出現錯誤并仍然使用 D 類作為類型參數?有沒有一種方法可以定義類 D 以使用 AB,但仍然具有 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> {} // OKpublic class Y extends R<D> {} // Error: Type parameter D is not within its bound; should extends S<D>任何幫助,將不勝感激。
1 回答

飲歌長嘯
TA貢獻1951條經驗 獲得超3個贊
要編譯它,您可以更改E extends S<E>
為E extends S<? super E>
:
public?abstract?class?R<E?extends?S<??super?E>>?{}
如果沒有有界通配符,D
則擴展S<B>
而不是S<D>
.
添加回答
舉報
0/150
提交
取消