我有一个类似于这个的Java(for 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中你不能这样做,如果我错了就纠正我。
答案 0 :(得分:1)
我不知道这可能会失败,但我建议重构你的枚举:
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());
}