该switch
语句不接受类,但它接受枚举。您可以创建一个enum
类型来保存类类型并将它们设置为每个类中的字段。然后可以通过在switch
语句中使用的接口方法公开枚举类型。
MyClassType 枚举
public enum MyClassType {
CLASSA, CLASSB
}
可发现的界面
public interface Discoverable {
public MyClassType getType();
}
A类
public class ClassA implements Discoverable {
private MyClassType type = MyClassType.CLASSA;
public MyClassType getType() {
return type;
}
}
B类
public class ClassB implements Discoverable {
private MyClassType type = MyClassType.CLASSB;
public MyClassType getType() {
return this.type;
}
}
用法
public static void main(String[] args) {
Discoverable a = new ClassA();
Discoverable b = new ClassB();
switch (a.getType()) {
case CLASSA:
System.out.println("class a");
break;
case CLASSB:
System.out.println("class b");
break;
}
}
更好的方法是将这个逻辑放入ClassA
并ClassB
通过接口公开。
界面变化
public interface Discoverable {
public void doWork();
}
A 类变化
public class ClassA implements Discoverable {
public void doWork() {
System.out.println("class a");
}
}
B类
public class ClassB implements Discoverable {
public void doWork() {
System.out.println("class b");
}
}
用法
public static void main(String[] args) {
Discoverable a = new ClassA();
Discoverable b = new ClassB();
a.doWork();
}