我有一个类应该在c'tor中接收一些IStratagy接口的实现类型(具体类类型),并创建这些接收类型的一些对象。 这样的事情:
Class SomeClass {
public SomeClass(Class<IStrategy> strategyClass) {
strategyClass.newInstance();
// catch nasty reflection exceptions...
}
}
我想确保参数实现IStrategy。 我可以接收一个参数“IStrategy concreteStrategy”然后是concreteStrategy.getClass()。newInstance()但是它仍然是我想要避免的反射.. Java中这个问题的最佳实践是什么?
答案 0 :(得分:0)
我认为您应该使用以下方法:
if( IStrategy.class.isAssignableFrom(strategyClass) ) {
.....
}
基本上这就像是instanceof,但没有创建具体策略实现的实际实例。
希望这有帮助
答案 1 :(得分:0)
为什么不那么简单:
Class SomeClass {
public SomeClass( IStrategy strategyClass ) {
...
}
}