switch ステートメントで instanceof 演算子を使用することは可能ですか? 質問する

switch ステートメントで instanceof 演算子を使用することは可能ですか? 質問する

instanceofオブジェクトに switch case を使用する際の質問があります:

たとえば、私の問題は Java で再現できます。

if(this instanceof A)
    doA();
else if(this instanceof B)
    doB();
else if(this instanceof C)
    doC():

どのように実装されますかswitch...case?

ベストアンサー1

これはサブタイプポリモーフィズムが役立つ典型的なシナリオです。次の操作を行います。

interface I {
  void do();
}

class A implements I { void do() { doA() } ... }
class B implements I { void do() { doB() } ... }
class C implements I { void do() { doC() } ... }

do()その後は、を呼び出すだけですthis

A、、を自由に変更できない場合はBCビジター パターンを適用して同じことを実現できます。

おすすめ記事