我试图在 Java 中声明一个枚举,并在 switch 语句中使用该类型的变量,其中涵盖了该类型枚举常量的所有可能情况。
enum MyEnum {
FOO,
BAR
}
private static void test(MyEnum e) {
String msg;
switch (e) {
case FOO:
msg = "foo";
break;
case BAR:
msg = "bar";
break;
}
System.out.println("Enum is: " + e + " msg is: " + msg); //compiler error
}
为什么编译器无法检测到此开关将始终初始化msg
(或者抛出 NullPointerException 因为e
is null
)?
想象一下如果MyEnum
是一个单独的类。然后就可以重新编译了MyEnum
类,并添加新值,无需重新编译EnumSwitchTest
(所以不会出现任何错误)。
然后另一个类就可以调用test
与新的价值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)