自Java 14开始,switch表达式正式成为标准特性,为传统的switch语句提供了更简洁、更安全的替代方案。
与传统switch语句相比,switch表达式有以下几个重要改进:
- 箭头语法:使用"->"替代传统的冒号,避免因缺少break导致的下落问题
- 返回值:switch表达式可以返回值,使代码更加简洁
- 多case标签:允许一个case有多个标签,减少重复代码
// 传统switch语句
Day day = Day.WEDNESDAY;
switch (day) {
case MONDAY:
case FRIDAY:
case SUNDAY:
System.out.println(6);
break;
// ... 其他case
}
// 新的switch表达式
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
default -> throw new IllegalStateException("Invalid day: " + day);
};
switch表达式还支持yield关键字,用于在代码块中返回值:
int result = switch (mode) {
case "A" -> 1;
case "B" -> 2;
case "C" -> {
doSomething();
yield 3; // 使用yield返回值
}
default -> -1;
};
这些改进使switch结构更加表达性强,减少了错误的发生,是现代Java编程中的重要特性。