0

と呼ばれる抽象クラスとA、2つの継承されたクラスがあります:BC。パラメータを持つメソッドがあります:

myMethod (final A a)

そして、インスタンス化されたオブジェクトのタイプに応じて、さまざまなものを作成したいと思います。どうすればいいですか?

別のデザインパターンに従うことも良い方法ですが、現在コードを変更することは許可されていません。

ありがとう。

4

2 に答える 2

5

instanceofキーワードを使用します。例えば:

if (a instanceof B) {...}
else if (a instanceof C) {...}
else {...}
于 2013-01-17T20:00:49.350 に答える
2

instanceof演算子を使用:

myMethod (final A a) {
  if(a instanceof B) {
    //...
  } else if(a instanceof C) {
    //...
  } else {
    throw new IllegalArgumentException("Unknown type: " + a);
  }
}

ただし、これはすべてのOO原則に対して不適切な方法であることに注意してください。

于 2013-01-17T20:00:35.193 に答える