👉 官网:https://projectlombok.org/
👉 最新版本:1.18.30(2023/09/20 发布,支持 JDK 21,jar 包 1.9MB)
Lombok 是一个 Java 实用工具,通过提供 Lombok 注解,来帮助开发人员消除冗长的代码,尤其是 POJO。
官方介绍:Spice up your java: Automatic Resource Management, automatic generation of getters, setters, equals, hashCode and toString, and more!
中文翻译:给你的 java 加点料,比如自动化资源管理、自动生成常用方法(比如 setter/getter/equals/hashCode/toString 等)。
下面,我们具体看个例子,就能体会到 **加点料 **是什么意思了。
🤷 典型场景:Java 中 POJO 中定义了很多属性,导致代码冗长。
示例代码如下:有好几个属性,代码不简洁,冗长,但又必须写。
package com.ganlan.cloud.common;
public class User {
private Long id;
private String name;
private String uid;
private String email;
private String deptName;
private Integer age;
private String comments;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getComments() {
return comments;
}
public void setComments(String comments) {
this.comments = comments;
}
}
😎 Lombok 解决方案: 消除 Java 的冗长代码,使得代码更加简洁。
使用 Lombok 注解后的例子:代码很短,且反编译后的代码就是我们想要的。
@Setter
@Getter
public class User {
private Long id;
private String name;
private String uid;
private String email;
private String deptName;
private Integer age;
private String comments;
}
反编译后的代码:
public class User {
private Long id;
private String name;
private String uid;
private String email;
private String deptName;
private Integer age;
private String comments;
public User() {
}
public void setId(Long id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setUid(String uid) {
this.uid = uid;
}
public void setEmail(String email) {
this.email = email;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public void setAge(Integer age) {
this.age = age;
}
public void setComments(String comments) {
this.comments = comments;
}
public Long getId() {
return this.id;
}
public String getName() {
return this.name;
}
public String getUid() {
return this.uid;
}
public String getEmail() {
return this.email;
}
public String getDeptName() {
return this.deptName;
}
public Integer getAge() {
return this.age;
}
public String getComments() {
return this.comments;
}
}
至此,Lombok 入门啦!
?? 优势:
1、帮助开发人员消除 Java 冗长代码,尤其是 POJO
2、使用简单,上手迅速,支持很多构建工具和 IDE
? 缺点:
1、代码可调试性低:没法打断点,没法查看谁调用了这些生成的方法。
2、强迫队友使用 Lombok:队友如果不安装 Lombok,就会编译报错。
3、JDK 升级可能导致 Lombok 不可用:如果 JDK 升级后有问题,如果 Lombok 不可用,就比较麻烦了。
4、开发滥用 Lombok:如果不理解 Lombok 注解的作用,开发容易滥用,然后挖坑填自己,埋队友。
🚀 建议:权衡利弊,利大于弊则用之。