Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。
官网地址:https://projectlombok.org/
一、安装插件
这里以Intellij IDE(Mac版)为例,依次打开 Preferences -> Plugins -> 搜索Lombok插件安装。
我这里已经安装了,所以是update。
二、添加依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
三、val和val的使用
val、val关键字在定义一个变量时候不需要指定它的类型,它的类型由初始化的表达式推断。
(1)var 所声明的变量是非 final 的。
var example = new ArrayList<String>();
example.add("Hello, World!");
编译后的代码:
ArrayList<String> example = new ArrayList<String>();
example.add("Hello, World!");
(2)val 所声明的变量是 final 的。
val foo = example.get(0);
编译后的代码:
final String foo = example.get(0);
四、Lombok内容概览
- var 所声明的变量是非 final 的。
- val 所声明的变量是 final 的。
- @Getter 注解在属性(类)上,为属性(所有非静态成员变量)提供 get() 方法
- @Setter 注解在属性(类)上,为属性(所有非静态成员变量)提供 set() 方法
- @Accessors 注注解在属性(类)上,配置getter和setter方法的生成结果,分别有三个属性:fluent、chain、prefix
- @ToString 该注解的作用是为类自动生成 toString() 方法
- @EqualsAndHashCode 为对象字段自动生成 hashCode() 和 equals() 实现
- @AllArgsConstructor、@RequiredArgsConstructor、@NoArgsConstructor 顾名思义,为类自动生成对应参数的构造器
- @Data 注解在类上,自动为所有字段添加 @ToString、@EqualsAndHashCode、@Getter。为非 final 字段添加 @Setter 和 @RequiredArgsConstructor。本质上相当于几个注解的综合效果
- @Value 注解和 @Data 类似,区别在于它会把所有成员变量默认定义为 private final 修饰,并且不会生成 set() 方法
- @Log、@Log4j、@Log4j2、@Slf4j、@XSlf4j、@CommonsLog、@JBossLog 注解在类上,自动为类添加对应的日志支持
- @NonNull 注解在方法参数上,用于自动生成空值参数检查,自动帮助我们避免空指针
- @Cleanup 自动帮我们调用 close() 方法,作用在局部变量上,在作用域结束时会自动调用 close() 方法释放资源,可以关闭流
- @Builder 注解在类上,被注解的类加个构造者模式
- @Synchronized 注解在类上,加个同步锁
- @SneakyThrows 等同于 try/catch 捕获异常
- @UtilityClass 注解在类上,所有成员都会自动标记为static。甚至字段和内部类。