Java 12 Switch表达式
Java 12引入了表达式在Switch语句中的用法,并将其作为预览特性发布。以下是新的Switch表达式引入的变化:
没有穿透效应。不需要break语句来阻止穿透。单个case可以有多个常量标签。现在必须有默认case。考虑以下示例:
ApiTester.java
public class APITester { public static void main(String[] args) { System.out.println("Old Switch"); System.out.println(getDayTypeOldStyle("Monday")); System.out.println(getDayTypeOldStyle("Saturday")); System.out.println(getDayTypeOldStyle("")); System.out.println("New Switch"); System.out.println(getDayType("Monday")); System.out.println(getDayType("Saturday")); System.out.println(getDayType("")); } public static String getDayType(String day) { String result = switch (day) { case "Monday", "Tuesday", "Wednesday","Thursday", "Friday" -> "Weekday"; case "Saturday", "Sunday" -> "Weekend"; default -> { break "Invalid day."; } }; return result; } public static String getDayTypeOldStyle(String day) { String result = null; switch (day) { case "Monday": case "Tuesday": case "Wednesday": case "Thursday": case "Friday": result = "Weekday"; break; case "Saturday": case "Sunday": result = "Weekend"; break; default: result = "Invalid day."; } return result; }}编译和运行程序
$javac -Xlint:preview --enable-preview -source 12 APITester.java$java --enable-preview APITester
输出
Old SwitchWeekdayWeekendInvalid day.New SwitchWeekdayWeekendInvalid day.
