0

IStratagy インターフェイスの実装型 (具体的なクラス型) を c'tor で受け取り、これらの受け取った型のオブジェクトをいくつか作成するクラスがあります。そんな感じ:

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

パラメータが IStrategy を実装していることを確認したいと思います。パラメータ「IStrategyconcreteStrategy」を受け取り、次にconcreteStrategy.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 に答える