是否可以在 switch 语句中使用 instanceof 运算符?
2022-08-31 04:58:01
我有一个使用对象开关案例的问题:instanceof
例如:我的问题可以用Java重现:
if(this instanceof A)
doA();
else if(this instanceof B)
doB();
else if(this instanceof C)
doC():
如何使用 ?switch...case
我有一个使用对象开关案例的问题:instanceof
例如:我的问题可以用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() } ... }
然后,您只需调用.do()
this
如果您不能自由地更改 、 、 和 ,则可以应用访问者模式来实现相同的目的。A
B
C
如果您绝对无法编码到接口,则可以使用枚举作为中介:
public A() {
CLAZZ z = CLAZZ.valueOf(this.getClass().getSimpleName());
switch (z) {
case A:
doA();
break;
case B:
doB();
break;
case C:
doC();
break;
}
}
enum CLAZZ {
A,B,C;
}