能否提取内部的泛型类型?
假设有以下类:
interface Animal { }
class Bear implements Animal { }
class AnimalRule<ANIMAL extends Animal> { }
class BearRule extends AnimalRule<Bear> { }
现在我想为这段代码编写测试,但我希望有一个通用的基础测试类。
我可以这样声明它:
class AnimalRuleAltTest<ANIMAL extends Animal, RULE extends AnimalRule<ANIMAL>> {
RULE rule;
ANIMAL animal;
}
class BearRuleAltTest extends AnimalRuleAltTest<Bear, BearRule> { }
然而我必须同时传递Bear
和BearRule
,这似乎是多余的,因为编译器肯定知道BearRule
已经实现了AnimalRule<
Bear>
。
如果我只提供规则类,是否有可能提取内部泛型类型?
像这样:
class AnimalRuleTest<RULE extends AnimalRule<ANIMAL>> {
RULE rule;
ANIMAL animal;
}
class BearRuleTest extends AnimalRuleTest<BearRule> { }
更新:为了更清楚,我正在询问提取内部类/是否可能,而不是如何“修复”它。
BearRule
。这让我想问为什么不直接将其定义为AnimalRuleAltTest<ANIMAL extends Animal>
呢? - ernest_kbearRule
有一个bear
),那么这将是可能的,但是你仍然无法在编译时通过推断类型来声明一个变量。 - ernest_k