record 是 Java 14 引入并在 Java 16 中正式稳定的一种新型类,用来定义不可变数据载体(data carrier),主要用于简化“数据类”的定义。
🧠 简单来说,
record
是什么?
record 是一种特殊的类,它自动帮你生成:
所有字段的 private final 声明
构造函数
getters 方法(名字就叫字段名)
toString()、equals()、hashCode() 方法
📦 使用场景
你有一组只负责存储数据的字段,不需要写很多样板代码(如构造函数、getter、toString 等),就可以用 record。
Example
public class RecordTest {
public static void main(String[] args) {
RecordTest recordTest = new RecordTest();
Person person = new Person(new Person.Address("北京市朝阳区", "北京市"), new Person.Age(18));
//编译不通过;报:无法将值赋给 final 变量 'street'
//person.address.street="22";
System.out.println(person.address.street());
}
public record Person(Address address,Age age){
public record Address(String street, String city){}
public record Age(int years){}
public Person(Address address, Age age) {
this.address = address;
this.age = age;
}
}
}