0

我有一个类应该在 c'tor 中接收一些 IStratagy 接口的实现类型(具体类类型),并创建这些接收类型的一些对象。像这样的东西:

Class SomeClass {
    public SomeClass(Class<IStrategy> strategyClass) {
        strategyClass.newInstance();
        // catch nasty reflection exceptions...
    }
}

我想确保参数实现 IStrategy。我可以收到一个参数“IStrategy 具体策略”,然后是具体策略.getClass().newInstance(),但它仍然是我试图避免的反射。Java 中这个问题的最佳实践是什么?

4

2 回答 2

0

为什么不像这样更简单:

Class SomeClass {
   public SomeClass( IStrategy strategyClass ) {
      ...
   }
}
于 2012-10-28T08:59:16.783 回答
0

我认为您应该使用以下方法:

if( IStrategy.class.isAssignableFrom(strategyClass) ) {
          .....
}

基本上这就像 instanceof,但没有创建具体策略实施的实际实例。

希望这可以帮助

于 2012-10-28T08:07:44.290 回答