我有一个与此类似的 Java(适用于 Android)代码:
enum MyEnum {
A, B, C
}
String f(MyEnum e) {
if (e == null) {
return null;
}
switch(e) {
case A: return "AA";
case B: return "BB";
case C: return "CC";
default: throw new IllegalStateException("invalid enum");
}
}
我在默认子句中抛出了一次异常!有人可以解释一下这在理论上是否可行以及如何实现吗?
例如,在 C++ 中,你可以有一个枚举变量,其值不是声明的枚举值,但我想在 Java 中你不能这样做,如果我错了,请纠正我。
最佳答案
我不明白这会如何失败,但我建议将您的枚举重构为:
enum MyEnum {
A("AA"),
B("BB"),
C("CC");
private final String value;
public MyEnum(String value){
this.value = value;
}
public String f(){
return value;
}
}
现在您仍然可以执行相同的操作,但添加新枚举 100% 安全
public void foo(MyEnum enum){
System.out.println(enum.f());
}
关于Java switch 语句在枚举上获得默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25462299/