代码对比
✕ Java 8
String msg;
switch (day) {
case MONDAY:
msg = "Start";
break;
case FRIDAY:
msg = "End";
break;
default:
msg = "Mid";
}
✓ Java 14+
String msg = switch (day) {
case MONDAY -> "Start";
case FRIDAY -> "End";
default -> "Mid";
};
发现此代码有问题? 告诉我们。
为什么现代方式更好
返回值
直接赋值 switch 结果——无需临时变量。
无穿透
箭头语法消除因缺少 break 而导致的意外穿透 bug。
穷举性检查
编译器确保所有情况均已覆盖。
旧方式
switch 语句
现代方式
switch 表达式
自 JDK
14
难度
入门
JDK 支持
switch 表达式
可用
自 JDK 14 起广泛可用(2020 年 3 月)
工作原理
switch 表达式直接返回值,使用箭头语法防止穿透,并要求穷举性。编译器检查所有情况是否已处理。
相关文档