Lombok for Java: 完整指南与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 Lombok,为什么需要它?



Lombok (Project Lombok) 是一个用于 Java 语言的库,它可以显著减少样板代码 (boilerplate code) 的数量。在 Java 开发中,开发者经常编写重复的结构:getter、setter、构造函数、toString()、equals() 和 hashCode() 方法。Lombok 通过注解在编译阶段自动生成这些代码。



Lombok 的主要目标是让代码更简洁、更短、更易于维护。您无需编写数十行重复代码,只需添加一个注解,所有内容便会自动生成。这对于模型类 (POJO/DTO) 尤其有用,在这些类中,样板代码可能占到总代码量的 70%。



Lombok 不是一个运行时框架——它仅在编译阶段工作。生成的代码会被嵌入到字节码中,因此在运行时不需要任何 Lombok 依赖。



安装 Lombok



Lombok 作为普通依赖项添加到您的项目中。由于它是一个 Java 库,因此不通过 pip 或 npm 安装。以下是主要的安装方法:



Maven

在 pom.xml 中添加:

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


Gradle

在 build.gradle 中添加:

dependencies {    compileOnly 'org.projectlombok:lombok:1.18.30'    annotationProcessor 'org.projectlombok:lombok:1.18.30'}


IntelliJ IDEA

在 IntelliJ IDEA 中,需要安装 Lombok 插件 (Settings → Plugins → Marketplace → Lombok) 并启用注解处理 (Settings → Build, Execution, Deployment → Compiler → Annotation Processors → Enable annotation processing)。



Eclipse

从官方网站下载 Lombok 的 JAR 文件,然后双击运行——安装程序会自动找到您的 IDE 并配置必要的设置。



快速入门及代码示例



我们来看一个典型的 Java 类在使用 Lombok 前后的对比。



不使用 Lombok (传统方式):

public class User {    private String name;    private int age;    private String email;

public User() {}

public User(String name, int age, String email) { this.name = name; this.age = age; this.email = email; }

public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }

@Override public String toString() { return "User{name='" + name + "', age=" + age + ", email='" + email + "'}"; }

@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; return age == user.age && Objects.equals(name, user.name) && Objects.equals(email, user.email); }

@Override public int hashCode() { return Objects.hash(name, age, email); }}


使用 Lombok:

import lombok.*;

@Data@NoArgsConstructor@AllArgsConstructorpublic class User { private String name; private int age; private String email;}


仅用 5 行代码代替了 50 行!代码变得简洁、易读且易于维护。



Lombok 的主要注解和方法



以下是 Lombok 的关键注解。每个注解都会生成特定的内

推荐