lombok 自动使用
我喜欢布兰登(Brandon )在博客文章中比较Project Lombok , AutoValue和Immutables的建议 ,而这篇文章试图做到这一点。 我已经简要概述了Project Lombok , AutoValue和Immutables ,但是这篇文章有所不同,因为它突出了它们之间的异同。
Lombok, AutoValue和Immutables有很多相同之处,我尝试用以下单个描述性句子总结这些相似之处:Lombok,AutoValue和Immutables使用注释处理为值对象类所使用的常见操作生成样板代码。 本文的其余部分将更详细地探讨这些相似之处,并对比这三种方法。
代码生成
Lombok,AutoValue和Immutables均旨在从简洁的代码表示形式生成详细的样板代码,这些代码表示形式专注于高级业务逻辑,而将实现的低级细节留给代码生成。 常见的对象方法,例如toString() , equals(Object)和hashCode()很重要,但需要正确编写。 容易犯这些错误,即使最初正确地编写了这些错误(包括通过IDE生成),但在对类产生影响的其他更改时也可以忽略它们。
价值对象
Lombok , AutoValue和Immutables均支持生成“ 值对象” 。 尽管AutoValue严格执行值对象的生成,但如果指定了@Modifiable ,则Immutables允许生成的对象是可修改的,并且Lombok在其生成的类中使用@Set和@Data等批注支持多级修改。
超越价值对象
AutoValue专注于值对象的生成,并基于模板类中的抽象方法,支持字段,构造函数/生成器,具体访问器方法的生成以及常见方法equals(Object)
, hashCode()
和toString()
的实现。
Immutables提供的功能类似于AutoValue提供的功能,并添加了使用@ Value.Modifiable生成可修改类的功能 。 不可变对象还提供其他功能 ,包括: