Java Record 类:不可变数据载体
学习使用 record 关键字简洁地创建纯数据类,自动生成构造器、equals、hashCode 和 toString。 · 难度:入门 · +15XP
什么是 Record?
Record 是 Java 14 引入的预览特性,在 Java 16 正式发布。它是一种特殊的类,用于透明地承载不可变数据。编译器自动生成构造器、访问器、equals、hashCode 和 toString。
基本语法
public record Point(int x, int y) {}
// 使用
Point p = new Point(3, 4);
System.out.println(p.x()); // 注意:访问器名为 x(),不是 getX()
System.out.println(p); // Point[x=3, y=4]
自定义行为
可以在 record 体中添加静态方法、实例方法或紧凑构造器(用于校验):
public record Range(int min, int max) {
// 紧凑构造器
public Range {
if (min > max) throw new IllegalArgumentException("min > max");
}
public boolean contains(int value) {
return value >= min && value <= max;
}
}
Record 与普通类的对比
| 特性 | Record | 普通类 |
|---|---|---|
| 不变性 | 默认不可变 | 需要手动设置 |
| 样板代码 | 极少 | 较多(getter/setter等) |
| 继承 | 不能继承其他类 | 可继承 |
| 适用场景 | 数据传输对象(DTO)、值对象 | 复杂业务逻辑 |
练习提示
在 starter_code 中定义一个 Student record,包含 name 和 id 字段,并在 main 中创建实例打印。