我喜欢Lombok项目,但如今,我正在阅读并尝试Java 14的一些新功能。
在新功能内部,有record关键字,该关键字允许创建具有以下内置功能的类:构造函数,私有最终字段,访问器,equals / hashCode,getter和toString方法。
现在我的问题是:最好依靠Lombok的功能,还是我们应该开始使用记录功能:
最好使用这个:
record Person (String name, String surname) {}
或者那个:
@AllArgsConstructor @ToString @EqualsAndHashCode public class GetterSetterExample { @Getter private int name; @Getter private int surname; }
两种方法的优缺点是什么?
Lombok和recordJava语言的功能是用于不同事物的不同工具。有一些表面上的重叠,但不要让那分散您的注意力。
record
龙目岛主要是关于 句法 便利性。它是一个预装有一些已知有用代码模式的宏处理器。它没有赋予任何语义。根据您在代码中设置的带有注释的旋钮,它只会自动执行模式。Lombok纯粹是关于实现数据承载类的便利。
记录是一种 语义 特征;他们是 名义元组 。通过进行一个以Point 表示 的元组的语义声明,(int x, int y)编译器可以从该状态描述中得出其表示以及构造,声明,相等,哈希和字符串表示协议。由于它们具有语义,因此读者和框架也可以对记录的API充满信心。(这在语法上也可能很方便;如果是这样,那就太好了。)
Point
(int x, int y)