我喜欢项目Lombok,但最近我在阅读并尝试一些Java 14的新功能。
其中的一个新特性是record关键字,它允许创建一个已经内置以下功能的类:构造函数、私有不可变字段、访问器、equals/hashCode、getter和toString方法。
现在我的问题是:我们是应该依赖Lombok的功能,还是开始使用record功能:
这样做更好吗:
record Person (String name, String surname) {}
或者那个:
@AllArgsConstructor
@ToString
@EqualsAndHashCode
public class Person {
@Getter private int name;
@Getter private int surname;
}
这两种方法的利弊是什么?
alice.phoneNumber()
而不是像JavaBeans约定那样在前面加上get
,比如alice.getPhoneNumber()
。 - Basil Bourquerecord Person (String name, String surname) {}
与:@Value class Person { int name; int surname; }
此外,只需将@Value
更改为@Data
,你就可以神奇地获得一个与ORM兼容的非不可变类。这是使用Java 17 record不可能或难以实现的。 - Zartc