代码对比
✕ Java 8
if (obj instanceof Point) {
Point p = (Point) obj;
int x = p.getX();
int y = p.getY();
System.out.println(x + y);
}
✓ Java 21+
if (obj instanceof Point(int x, int y)) {
IO.println(x + y);
}
发现此代码有问题? 告诉我们。
为什么现代方式更好
直接提取
无需手动调用访问器即可访问 record 组件。
可嵌套
模式可以嵌套——在单个表达式中匹配内部 record。
代码紧凑
五行变两行——减少仪式感,保持清晰。
旧方式
手动访问
现代方式
解构
自 JDK
21
难度
中级
JDK 支持
record 模式(解构)
可用
自 JDK 21 LTS 起广泛可用(2023 年 9 月)
工作原理
record 模式让您在 instanceof 和 switch 模式中直接分解 record 的组件。组件在单个表达式中绑定到变量。
相关文档