什么是lombok?
lombok是一个Java库,它提供了一组注解用来消除Java的样板代码,使代码更加清晰简洁,让你专注于业务功能的实现。
lombok提供了如下主要注解:
- @Setter 注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法
- @Getter 使用方法同@Setter,只不过生成的是对应的getter方法
- @Data 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法
- @ToString 注解在类,生成toString()方法
- @EqualsAndHashCode 注解在类,生成hashCode和equals方法
- @NoArgsConstructor 注解在类,生成无参的构造方法
- @RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段
- @AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法
- @Builder 使用建造者模式
- @Slf4j 注解在类,生成log常量
我们平时主要用到的估计就@Setter、@Getter、@Data、@Builder、@Slf4j
在开始写代码之前,你需要做两件事
- 引入lombok jar包
- IDE安装lombok插件
gradle依赖
compile group: 'org.projectlombok',name: 'lombok',version: '1.16.20'
idea安装lombok插件,并开启配置
@Setter、@Getter用法
@Setter
@Getter
public class User {
private String name;
private String address;
}
public class LombokDemo {
public static void main(String[] args){
User user = new User();
user.setName("name");
user.setAddress("my address");
System.out.println(user.getName() + "|" + user.getAddress());
}
}
可以看到User类打上@Setter、@Getter后就不用写setter、getter方法了,减少了很多模板代码
@Data用法
@Data注解在类上同样也可以达到不用写Setter、Getter的效果,除此之外,它还帮你生成了equals、canEqual、hashCode、toString方法
@Data
public class User {
private String name;
private String address;
}
@Builder用法
@Builder注解在类上,可以使用建造者模式来构造对象
@Data
@Builder
public class User {
private String name;
private String address;
}
public class LombokDemo {
public static void main(String[] args){
User user = User.builder()
.name("name")
.address("my address")
.build();
}
}
可以看到,我们直接通过builder()方法和一连串的属性设值来构造出对象,很方便
@Slf4j用法
@Slf4j注解用来生成log常量,记录日志
@Slf4j
public class LombokDemo {
public static void main(String[] args){
log.info("run~~~");
User user = User.builder()
.name("name")
.address("my address")
.build();
}
}
在类上加了@Slf4j注解后,类中就可以直接用log常量来记录日志
为啥有些开发人员不推荐使用Lombok
既然上面列举了很多lombok的好处,它能帮我们做很多事,那为啥有些开发人员不推荐使用呢?
lombok是一把双刃剑,给你带来方便的同时,也会给你带来一些麻烦,比如:
- 强迫队友安装lombok插件,只要引入了lombok,你队友的IDE就必须安装lombok插件,要不然代码无法编译
- 代码可调试性降低,因为lombok给你自动生成了一些代码,这些代码是在编译的时候才自动生成的,你在调试的时候是没有的
- 假如我们要在getter和setter中做些自定义的操作,就不能使用@Data注解自动生成
总结
Lombok是一个很有用的Java库,它提供了一组注解用来消除Java中的模板代码,这对于有代码洁癖的同学来说是福音
Lombok有如下好处:
- 减少样板代码,如get,set,toString,hash,equal等方法,大量的模板代码进行封装,减少重复代码,当增加新属性的时候,以上方法都不需要再重新编写
- 增强代码可读性:专注于类的属性定义,不需要再去为排版浪费时间
Lombok有如下弊端:
- 强迫队友安装lombok插件
- 代码可调试性降低
- 要在getter和setter中做些自定义的操作,就不能使用@Data注解自动生成
当然lombok只是一个工具,到底要不要使用,还需要结合实际情况来做一些衡量
你的团队在使用lombok吗?欢迎给我留言~
如果感觉对你有些帮忙,请收藏好,你的关注和点赞是对我最大的鼓励!
如果想跟我一起学习,坚信技术改变世界,请关注【Java天堂】公众号,我会定期分享自己的学习成果,第一时间推送给您
参考:
https://baike.baidu.com/item/Lombok/23780246?fr=aladdin
https://msd.misuland.com/pd/4146263399224842234