1. 为什么要使用 lombok。
- 普通的 POJO 需要写或是用 IDEA 等集成开发环境生成大量 gettter, setter 方法
- 普通的 POJO 对于 equals 和 hashCode 等方法,也需要自己维护。特别你写接口的时候,如果添加了一个字段忘了维护,可能会导致一些 bug。
- 普通的 POJO 没有 builder 的支持,得自己实现该模式。
- …
总之,lombok 极大地简化你的代码,去掉了那些模板代码,让你的 POJO 看起来更加地清爽(可以只有类名和字段的声明,加上少量的注解)。
2.jar 包的下载
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
3.IntelliJ IDEA 中 安装 lombok 插件。
其他集成开发环境(比如 Visual Studio Code, Eclipse), 请参见官方文档 Install 部分。
4. 具体使用。
我把对应的代码都上传到 GitHub,翻译都写到了 Wiki, 感觉有用就 star ????。
val
终于! 无忧无虑的 final 局部变量。
var
可变!类型可变的局部变量
@NonNull
我开始停止了焦虑,爱上了空指针
@Getter/@Setter
再也不用写 public int getFoo() {return foo;}
了。
ToString
没必要启动 debugger 来查看你的字段:让 lombok 来为你生成一个 ToString
方法吧!
@EqualsAndHashCode
让相等变得简单: 从你对象的字段中生成 hashCode
和 equals
的实现
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
按需生成构造函数: 生成不带参数的,每个 final/non-null 字段一个参数的,一个字段一个参数的构造函数。
@Data
所有的都合到一起:@ToString
,@ EqualsAndHashCode
,所有字段的 @Getter
,所有非 final 字段的 @Setter
和 @RequiredArgsConstructor
的快捷方式!
@Value
让不可变类变得非常容易。
@Builder
… and Bob’s your uncle: No-hassle fancy-pants APIs for object creation!
@SneakyThrows
大胆抛出以前没有人抛出的已检查异常!
@Synchronized
synchronized
做了正确的事:不要暴露你的锁。
@Getter(lazy=true))
惰性加载是一种美德!
@Log)
Captain’s Log, stardate 24435.7: “What was that line again?”
experimental
Head to the lab: The new stuff we’re working on.