在Java中将类型作为参数传递的最佳实践

时间:2012-10-28 08:05:18

标签: java design-patterns reflection

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

希望这有帮助

答案 1 :(得分:0)

为什么不那么简单:

Class SomeClass {
   public SomeClass( IStrategy strategyClass ) {
      ...
   }
}