原文提供:
参考文档:https://openjdk.org/jeps/406
在Java 14和Java 15中,已经引入了Switch表达式的初始版本。而在JDK 17中,Switch表达式得到了一些改进和增强,包括以下新特性:
简化的Switch表达式:在JDK 17中,可以使用简化的Switch表达式来替代传统的Switch语句。这意味着Switch表达式可以像其他表达式一样返回一个值,无需使用break语句,并且每个分支只需要使用"->"符号来分隔条件和代码块。
示例:
int dayOfWeek = 5;
String dayType = switch (dayOfWeek) {
case 1, 2, 3, 4, 5 -> "工作日";
case 6, 7 -> "休息日";
default -> throw new IllegalArgumentException("无效的星期");
};
System.out.println(dayType); // 输出:工作日
jdk8编写
int dayOfWeek = 5;
String dayType;
switch (dayOfWeek) {
case 1:
case 2:
case 3:
case 4:
case 5:
dayType = "工作日";
break;
case 6:
case 7:
dayType = "休息日";
break;
default:
throw new IllegalArgumentException("无效的星期");
}
System.out.println(dayType); // 输出:无效的星期
新增的Pattern匹配:在JDK 17中,Switch表达式还支持对Pattern进行匹配。这使得我们可以使用Switch表达式来处理更复杂的模式匹配操作,例如对类型、枚举常量等进行匹配。
示例:
Object obj = "Hello";
int length = switch (obj) {
case String s -> s.length();
case Integer i && i > 0 -> i;
case int[] arr && arr.length > 0 -> arr.length;
default -> -1;
};
System.out.println(length);