と呼ばれる抽象クラスとA
、2つの継承されたクラスがあります:B
とC
。パラメータを持つメソッドがあります:
myMethod (final A a)
そして、インスタンス化されたオブジェクトのタイプに応じて、さまざまなものを作成したいと思います。どうすればいいですか?
別のデザインパターンに従うことも良い方法ですが、現在コードを変更することは許可されていません。
ありがとう。
と呼ばれる抽象クラスとA
、2つの継承されたクラスがあります:B
とC
。パラメータを持つメソッドがあります:
myMethod (final A a)
そして、インスタンス化されたオブジェクトのタイプに応じて、さまざまなものを作成したいと思います。どうすればいいですか?
別のデザインパターンに従うことも良い方法ですが、現在コードを変更することは許可されていません。
ありがとう。
instanceof
キーワードを使用します。例えば:
if (a instanceof B) {...}
else if (a instanceof C) {...}
else {...}
instanceof
演算子を使用:
myMethod (final A a) {
if(a instanceof B) {
//...
} else if(a instanceof C) {
//...
} else {
throw new IllegalArgumentException("Unknown type: " + a);
}
}
ただし、これはすべてのOO原則に対して不適切な方法であることに注意してください。