Java 14引入增强型switch表达式,使用->替代:避免case穿透,支持返回值,通过yield在多行代码中返回结果,可匹配多个值并适用于枚举类型,使代码更简洁安全。
Java中从Java 14开始引入了增强型switch语句(也称为“switch表达式”),它让switch更简洁、更安全,并支持返回值。你不再需要写break防止穿透,也不再容易出错。
传统switch中每个case必须写break,否则会继续执行下一个case。增强型switch使用->代替冒号:,自动限制作用域,避免意外穿透。
示例:
int day = 3;
String result = switch (day) {
case 1 -> "星期一";
case 2 -> "星期二";
case 3 -> "星期三";
case 4 -> "星期四";
case 5 -> "星期五";
default -> "周末";
};
System.out.println(result); // 输出:星期三
如果某个case需要执行多条语句,可以用大括号{}包裹,并通过yield返回值。
示例:
int score = 85; String grade = switch (score / 10) { case 10, 9 -> "A"; case 8 -> { System.out.println("良好"); yield "B"; } case 7, 6 -> "C"; default -> "不及格"; }; System.out.println(grade); // 输出:良好 \n B
一个case可以匹配多个值,用逗号分开,提升可读性。
如上面例子中 case 10, 9 表示当值为10或9时都返回"A"。
增强型switch同样适用于枚举,语法一致,更加清晰。
enum Color { RED, GREEN, BLUE }
Color c = Color.RED;
String info = switch (c) {
case RED -> "红色表示停止";
case GREEN -> "绿色表示通行";
case BLUE -> "蓝色表示信息";
};
基本上就这些。增强型switch让代码更简洁、逻辑更清晰,特别是在需要根据条件返回不同值时特别有用。注意要确保所有可能路径都有返回值,编译器会检查是否覆盖所有情况。