我有以下示例代碼,并在最后一行產(chǎn)生“類型參數(shù)不在其范圍內(nèi)”錯(cuò)誤。C/D 類通過繼承重用了 A/B 中的大量代碼。我如何定義 Y 類才能不出現(xiàn)錯(cuò)誤并仍然使用 D 類作為類型參數(shù)?有沒有一種方法可以定義類 D 以使用 AB,但仍然具有 D 擴(kuò)展 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貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
要編譯它,您可以更改E extends S<E>
為E extends S<? super E>
:
public?abstract?class?R<E?extends?S<??super?E>>?{}
如果沒有有界通配符,D
則擴(kuò)展S<B>
而不是S<D>
.
添加回答
舉報(bào)
0/150
提交
取消