JEP 361引入了 switch 表达式,减少了 switch 常用用法的冗长。
作为此功能的一个特定细节,default不需要为枚举上的 switch 表达式编写类。以下代码编译:
public enum MyEnum {
ONE,
TWO;
}
public class OtherClass {
public static String computeAttribute(MyEnum myEnum) {
return switch (myEnum) {
case ONE -> "one";
case TWO -> "two";
};
}
}
Run Code Online (Sandbox Code Playgroud)
目前 switch 表达式是详尽的,但如果单独重新编译枚举,则枚举的新版本可能包含THREEswitch 语句没有预料到的另一个条目(例如)。
JEP 和这篇文章都提到编译器插入了一个默认子句,该子句会引发异常以表明这种不和谐。
我找不到任何说明抛出的异常的确切类型的内容。编译器在枚举值的 switch 表达式中插入的默认子句抛出的异常是什么?