說我有一些類如下:如何在類中使用擴展泛型類型?
class A { }
class B<TA extends A> { }
class C<TB extends B<? extends A>> {
TA varOfTypeTA; // this throws an error obviously
}
我如何定義的varOfTypeTA
類型是什麼TB的TA是什麼?
我知道我可以將其定義爲A varOfTypeTA
,但我希望它的類型爲TA
而不是A
。
我試圖迫使它用class C<TB extends B<TA extends A>>
來定義TA,所以我可以使用TA
,但是這會引發語法錯誤。
爲了澄清,如果我再定義這些類:
class Horse extends A { }
class HorseHerd extends B<Horse> { }
class HorseHerder extends C<HorseHerd> {
Horse getFavoriteHorse() { return varOfTypeTA; } // varOfTypeTA defined in class C must be of type Horse, otherwise I have to cast
}
我怎樣才能讓varOfTypeTA
是Horse
類型的?
我擔心這將是唯一的答案。沒有每次都將其作爲單獨類型添加的方式來聲明它的方法? – manixrock 2015-03-25 12:23:50
我可以看到你只需要一個的唯一方法就是如果你可以刪除'TB'。如果你可以創建一個類'Herd',你可以爲每個'TA'使用,那麼你可以聲明'public class C ',在裏面使用'Herd '而不是'TB' 'C',然後聲明'public class HorseHerder extends C '來擴展它。 –
2015-03-25 15:51:04
如果您需要使用'TA'來設置'C',那麼您需要聲明'TA'。 – 2015-03-25 15:52:07