【发布时间】:2021-06-15 01:29:05
【问题描述】:
JEP 361 引入了 switch 表达式,减少了 switch 常用用法的冗长。
作为此功能的一个特定细节,无需为枚举上的 switch 表达式编写 default 类。以下代码编译:
public enum MyEnum {
ONE,
TWO;
}
public class OtherClass {
public static String computeAttribute(MyEnum myEnum) {
return switch (myEnum) {
case ONE -> "one";
case TWO -> "two";
};
}
}
switch 表达式目前是详尽无遗的,但如果单独重新编译枚举,则新版本的枚举可能包含 switch 语句未预料到的另一个条目(例如THREE)。
JEP 和this post 都提到编译器会插入一个默认子句,该子句会引发异常以指示这种不和谐。
我找不到任何记录所引发异常的确切类型的内容。编译器在对枚举值的 switch 表达式中插入的 default 子句抛出的异常是什么?
【问题讨论】:
-
但这不是小事一桩吗?
标签: java switch-statement