假设我有一些课程如下:
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
not类型A
。
我尝试强制它定义 TAclass C<TB extends B<TA extends A>>
以便我可以使用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
?