搜索 K
Appearance
博客正在加载中...
Appearance
简单介绍下 Lombok
为了方便演示,我们新建一个 Maven 项目,骨架使用 quickstart
举个例子,我们写一个 User 类的 JavaBean,成员变量有 3 个:
package com.peterjxl;
public class User {
private String name;
private String email;
private String password;
} 然后,我们需要给这个 JavaBean 加上这些方法:
例如:
package com.peterjxl;
import java.util.Objects;
public class User {
private String name;
private String email;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(name, user.name) && Objects.equals(email, user.email) && Objects.equals(password, user.password);
}
@Override
public int hashCode() {
return Objects.hash(name, email, password);
}
} 可以看到,其实几乎每个 JavaBean 的 getter、setter、构造方法等方法,都是几乎一样的,但是又必须得有;因为按照 OOP 的思想,成员变量必须得是 private,因此得有 setter 和 getter(而且 Spring 等框架有时也会用到这些方法)。
这是一种重复:每个 JavaBean 都有的重复代码,能不能简化呢?例如,我在类上加一个注解,就自动生成 getter、setter 方法呢?
因此,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 库,能集成进大部分的 IDE 和构建工具,为你的 Java 锦上添花
不用再写 getter 和 equals 方法了,只需一个注解,你的类就能自动生成这些方法,还能自动插入 log 成员等,功能很多。
动手实践下吧!
以 Maven 依赖为例:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency> 除了 Maven,还支持 Ant,Gradle 等方式引入,具体引入方法看 官网 文档:
要在 IDE 中,安装相关的插件,才能正常编译和运行(支持的 IDE 看上图)。
以 IDEA 为例(版本 2023.1),默认已经捆安装了 Lombok 插件:
如果发现没有安装,安装步骤如下:
为了和之前的类区分,我们复制一个 User 类:
package com.peterjxl;
public class User2 {
private String name;
private String email;
private String password;
} 然后加上 Lombok 的注解:@Setter 和@Getter
package com.peterjxl;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class User2 {
private String name;
private String email;
private String password;
}加上这两个注解后,就会自动生成 setter 和 getter 方法,简化了大量的 setter 和 getter 方法。
最后,我们测试下能否正常使用。新建一个类,并调用 setter 和 getter 方法:
package com.peterjxl;
public class TestMain {
public static void main(String[] args) {
User user = new User();
user.setName("Peter");
User2 user2 = new User2();
user2.setName("Peter2");
System.out.println(user.getName());
System.out.println(user2.getName());
}
} 运行结果:
Peter
Peter2 可以看到,能正常调用 setter 和 getter 方法。下一篇,我们讲解更多关于 Lombok 的用法
除此之外,Lombok 还是开源的,GitHub 地址:github.com/projectlombok/lombok