Java 14 引入了一项重要的语言特性,即增强的 Switch 表达式。在此之前,Switch 语句主要用于多分支条件的控制流,而 Switch 表达式则是一种更为简洁和灵活的语法形式。
基本语法
传统的 Switch 语句:
int dayOfWeek = 3;
String dayType;
switch (dayOfWeek) {
case 1:
dayType = "Weekday";
break;
case 2:
case 3:
case 4:
case 5:
dayType = "Weekday";
break;
case 6:
case 7:
dayType = "Weekend";
break;
default:
dayType = "Invalid day";
}
Switch 表达式的新语法:
int dayOfWeek = 3;
String dayType = switch (dayOfWeek) {
case 1, 2, 3, 4, 5 -> "Weekday";
case 6, 7 -> "Weekend";
default -> "Invalid day";
};
特性和语法要点
- 箭头运算符 (->): Switch 表达式使用箭头运算符,使得语法更为简洁,不再需要显式的 break 语句。
- 多标签匹配: 可以在一个 case 标签下匹配多个值,使用逗号 , 隔开。
- 返回值: Switch 表达式具有返回值,可以将结果直接赋给变量。
- 新的 Default 分支语法:使用 default -> 代替传统的 default:。
- Switch 表达式作为语句和作为表达式: Switch 表达式可以作为语句(没有返回值)或作为表达式(有返回值)。上面的例子中展示的是作为表达式的用法。
使用场景
Switch 表达式在编写更简洁、易读的代码时非常有用。它特别适合在多个分支中需要返回值的情况下,可以避免冗长的 if-else 结构。
需要注意的是,Switch 表达式并不是完全取代传统的 Switch 语句,而是在一些情况下提供了更为紧凑和清晰的语法形式。
小提示:JEP 361 特性经过 JDK 12 和 JDK 13 两个预览版本的历练,最终在 JDK 14 中定稿。因此,虽然部分功能在 JDK 12 和 JDK 13 中也可见,但真正推荐的使用环境还是 JDK 14 及其之后的版本。