Lombok是什么
lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法啊,构造函数啊之类的,及对象的toString等方法,特别是相对于 POJO;lombok的作用就是为了省去我们手动创建这些代码的麻烦,它能够在我们编译源码的时候自动帮我们生成这些方法。
Lombok能够达到的效果就是在源码中不需要写一些通用的方法,但是在编译生成的字节码文件中会帮我们生成这些方法,这就是lombok的神奇作用。
虽然IDE里面都自带自动生成这些方法的功能,但是使用lombok会使你的代码看起来更加简洁,写起来也更加方便。
如何使用Lombok?
1.在IDEA中下载Lombok的插件
操作步骤:文件→设置→Plugins→Browse repositories...
在搜索框中输入Lombok,选择Lombok Plugin插件下载安装后重启IDEA就可以了
image.png
2.添加Lombok的依赖
版本(Mar 23, 2017)
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.16</version>
</dependency>
Lombok的主要用法:
@NonNull
: 可以帮助我们避免空指针。作用在方法参数上的注解,用于自动生成空值参数检查。
@Cleanup
: 自动帮我们调用close()方法。作用在局部变量上,在作用域结束时会自动调用close方法释放资源。
@Getter / @Setter
: 自动生成Getter/Setter方法, 作用在字段上,作用在类上,会自动生成该类所有非静态字段的Getter/Setter
@ToString
类注解,自动生成类的toString方法,可以做一些定制,比如不使用某个字段,不调用Getters等。
@EqualsAndHashCode
类注解,自动生成类中所有非静态非瞬时字段的equals方法和hashCode方法。
@NoArgsConstructor
: 自动生成无参数构造函数。
@AllArgsConstructor
: 自动生成全参数构造函数。
@RequiredArgsConstructor
类注解,为final字段和标记了@NotNull的字段生成构造函数。
@Data
类注解:
自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter,为非final字段添加@Setter,和@RequiredArgsConstructor
@Value
类注解,和@Data
类似,所有字段都为private,自动生成Getter但是没有Setter,会生成初始化所有字段的构造函数。相当于同时应用了final @ToString
、 @EqualsAndHashCode
、 @AllArgsConstructor
、@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
和 @Getter
。
lombok的缺点:
1、使用lombok虽然能够省去手动创建setter和getter方法的麻烦,但是却大大降低了源代码文件的可读性和完整性,降低了阅读源代码的舒适度。
2、在JSR-269的规范里面,并没有提供修改AST的API,那么lombok是怎么达到它的目的的?It's a total hack. Using non-public API.这是lombok的作者所说的。也就是说lombok是使用了一些内部的API,也许是通过强制类型转换也许是其他,如果某天发布的新版本JDK修改了那些内部API,那么我们使用了lombok的代码在那个版本的JDK上面将无法编译通过。
Lombok的官网:https://projectlombok.org/
Lombok的官方文档:https://projectlombok.org/features/index.html
Lombok的github地址:https://github.com/rzwitserloot/lombok
网友评论