java - 是否可以在 switch 语句中使用 instanceof 运算符?

标签 java switch-statement instanceof

我有一个为 instanceof 对象使用 switch case 的问题:

例如:我的问题可以用Java复现:

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

如何使用 switch...case 来实现?

最佳答案

这是子类型多态性有帮助的典型场景。执行以下操作

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() } ... }

然后你可以简单地在 this 上调用 do()

如果您不能随意更改 ABC,您可以应用访问者模式来实现相同的目的。

关于java - 是否可以在 switch 语句中使用 instanceof 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5579309/

相关文章:

java - 在 eclipse 中构建项目?

java - 默认的 java.lang.Object.clone() 方法执行什么类型的复制

c++ - 案例标签值已出现错误

java - 无法在两个 Activity 之间更改 TextView?

python - 如何在python case语句中运行代码块

C - 切换菜单内的图案打印

javascript - 如何有效地检查变量是数组还是对象(在 NodeJS 和 V8 中)?

java - 关于 instanceof 工作的问题

java - instanceof 被认为是不好的做法吗?如果是这样,在什么情况下instanceof仍然更可取?

java - 我如何抽象Java for循环的公共(public)部分以避免重复/重复