
粉丝提问:
JDK 21 的 Switch 引入了哪些新特性?如何利用它优化代码,提高可读性?
本文将全面解析 JDK 21 中 Switch 的新特性,展示如何用新语法提升代码可读性和开发效率。
&&、|| 运算符。->),简化代码。JDK 21 支持根据类型模式自动绑定变量,无需显式转换。
public class PatternMatchingExample {
public static void main(String[] args) {
Object input = "Hello, Java!";
switch (input) {
case String s -> System.out.println("字符串长度:" + s.length());
case Integer i -> System.out.println("整数平方:" + (i * i));
default -> System.out.println("未知类型:" + input);
}
}
}输出结果:
字符串长度:12一个分支可以匹配多个值或模式,简化重复的条件判断。
public class MultiPatternExample {
public static void main(String[] args) {
int day = 6;
switch (day) {
case 1, 2, 3, 4, 5 -> System.out.println("工作日");
case 6, 7 -> System.out.println("周末");
default -> System.out.println("未知日期");
}
}
}输出结果:
周末Switch 新语法支持在分支中直接添加逻辑条件,提升代码的表达能力。
public class NestedConditionExample {
public static void main(String[] args) {
Object input = 120;
switch (input) {
case Integer i && i > 100 -> System.out.println("大于100的整数:" + i);
case Integer i -> System.out.println("普通整数:" + i);
default -> System.out.println("未知类型:" + input);
}
}
}输出结果:
大于100的整数:120JDK 21 允许将 Switch 用作表达式返回值,结合箭头语法极大简化代码。
public class SwitchExpressionExample {
public static void main(String[] args) {
int day = 3;
String result = switch (day) {
case 1 -> "星期一";
case 2 -> "星期二";
case 3 -> "星期三";
case 4 -> "星期四";
case 5 -> "星期五";
case 6, 7 -> "周末";
default -> "未知日期";
};
System.out.println("今天是:" + result);
}
}输出结果:
今天是:星期三适用于多分支逻辑场景,避免冗长的 if-else。
public class UserRoleExample {
public static void main(String[] args) {
String role = "admin";
String permission = switch (role) {
case "admin" -> "拥有全部权限";
case "editor" -> "可以编辑内容";
case "viewer" -> "仅可查看内容";
default -> "无权限";
};
System.out.println("权限:" + permission);
}
}输出结果:
权限:拥有全部权限自动类型转换,减少显式检查的代码量。
public class TypeSafeSwitchExample {
public static void main(String[] args) {
Object input = 3.14;
switch (input) {
case Integer i -> System.out.println("整数:" + i);
case String s -> System.out.println("字符串:" + s);
case Double d -> System.out.println("浮点数:" + d);
default -> System.out.println("未知类型:" + input);
}
}
}输出结果:
浮点数:3.14Q:JDK 21 的 Switch 是否完全兼容旧语法? A:完全兼容。新特性是增强,不会影响旧版代码的运行。
Q:是否需要显式添加 break?
A:新语法中使用箭头(->)自动终止分支,无需手动添加 break。
Q:Switch 表达式是否支持返回复杂对象? A:支持。Switch 表达式可以返回任何类型,包括对象和集合。
JDK 21 中 Switch 的优化点: