关于IntelliJ IDEA Lombok插件的使用

关于Lombok插件的使用

一、Lombok介绍

官方介绍如下:
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
(Lombok项目是一个Java库,它会自动插入您的编辑器和构建工具中,从而为您的Java增光添彩。
永远不要再编写另一个getter或equals方法,带有一个注释的类将具有功能全面的生成器,自动执行日志记录变量等等。)

二、Lombok的基本使用

1)、IDE工具配置

(1)、IntelliJ IDEA

点击File-- Settings设置界面,安装Lombok插件:
在这里插入图片描述

(2)、Eclipse

参考【https://www.jianshu.com/p/6825d8116006】

2)、引入相应的maven包

<dependency>
	<groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.18</version>
    <scope>provided</scope>
</dependency>

3)具体引用

可以放在类文件上,也可以直接使用在属性或者方法之上
在这里插入图片描述

三、Lombok注解

  • @Setter :注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。
  • @Getter :使用方法同上,区别在于生成的是getter方法。
  • @ToString :注解在类,添加toString方法。
  • @EqualsAndHashCode: 注解在类,生成hashCode和equals方法。
  • @NoArgsConstructor: 注解在类,生成无参的构造方法。
  • @RequiredArgsConstructor: 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被 @NonNull注解的字段。
  • @AllArgsConstructor: 注解在类,生成包含类中所有字段的构造方法。
  • @Data: 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
  • @Slf4j: 注解在类,生成log变量,严格意义来说是常量。

四、Lombok的坑

第一点:

IDEA 对Lombok插件不友好,在使用Lombok插件之前得需要在IDE中安装;

第二点:

@Data是包含了@EqualsAndHashCode的功能,将会重写equals()和hashCode()方法,针对其equals()方法,当它进行属性比较时,其实只比较了当前类中的属性,如果两个子类对象,其子类中的属性相同、父类中的属性不同时,利用equals()方法时,依旧会认为这两个对象相同。
对于父类是Object且使用了@EqualsAndHashCode(callSuper = true)注解的类,这个类由 Lombok 生成的equals()方法只有在两个对象是同一个对象时,才会返回 true ,否则总为 false ,无论它们的属性是否相同。这个行为在大部分时间是不符合预期的,equals()失去了其意义。即使我们期望equals()是这样工作的,那么其余的属性比较代码便是累赘,会大幅度降低代码的分支覆盖率。

五、解决方法

  • 用了@Data就不要有继承关系,类似 Kotlin 的做法。
  • 自己重写equals(), Lombok 不会对显式重写的方法进行生成。
  • 显式使用@EqualsAndHashCode(callSuper = true), Lombok 会以显式指定的为准。

六、建议

1、如果想使用Lombok插件的话,可以合并使用@Setter、@Getter、@NoArgsConstructor、@AllArgsConstructor注解,不建议直接使用@Data注解;
2、不使用Lombok插件,直接使用IDE快捷键生成Getter/Setter、无参/有参方法,也是推荐的一种方式(推荐)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值