记录是自 Java 14(第一个预览版)和 Java 15(第二个预览版)以来的新语言功能。 根据我的理解,它们将用于减少不可变数据对象中的样板代码。
所以这一行:
public record Person (String firstName, String lastName) {}
相当于声明一个带有私有final字段、每个字段的getter、一个公共构造函数以及equals、hashCode和toString方法的类。
然而,这与使用 lombok
@Value
注释几乎相同:
@Value
public class Person {
String firstName;
String lastName;
}
除了你显然不需要处理 lombok 依赖之外,使用记录还有什么好处吗?
恕我直言,最大的优点是它是标准的。在标准化之前,我们在标准库中拥有的几乎所有内容都已以某种变体形式提供。但我更喜欢让一切正常工作并兼容,而不是必须处理不同版本的 jodatime、lombok 等的依赖关系。
但是我们还需要一段时间才能看到 JDK 16+ 被广泛采用。因此,如果您创建应用程序并且可以自由选择受支持的最低 JDK 版本,请使用记录。如果您创建一个库,您可能会以 JDK 11(因为它是 LTS)兼容性为目标,并且您必须使用 lombok。