代码对比
✕ Java 8
String format(Object obj) {
if (obj instanceof Integer i)
return "int: " + i;
else if (obj instanceof Double d)
return "double: " + d;
else if (obj instanceof String s)
return "str: " + s;
return "unknown";
}
✓ Java 21+
String format(Object obj) {
return switch (obj) {
case Integer i -> "int: " + i;
case Double d -> "double: " + d;
case String s -> "str: " + s;
default -> "unknown";
};
}
发现此代码有问题? 告诉我们。
为什么现代方式更好
结构化分派
switch 使分支结构清晰可见且易于扫描。
表达式形式
直接返回值——无需可变临时变量。
穷举性
编译器确保所有类型均已处理。
旧方式
if-else 链
现代方式
类型模式
自 JDK
21
难度
中级
JDK 支持
switch 中的模式匹配
可用
自 JDK 21 LTS 起广泛可用(2023 年 9 月)
工作原理
switch 中的模式匹配让您直接匹配类型,在单个 case 标签中组合类型检查、转换和绑定。
相关文档