说我有一些类如下:如何在类中使用扩展泛型类型?
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