好嘞阿杰 👍,Lombok 是 Java 面试和实际开发里都会遇到的工具,我给你整理一份完整的 Lombok 介绍、使用方法和总结,让你能快速掌握。


一、Lombok 介绍

  • Lombok 是什么
    • 一个 Java 开发工具库,通过 注解 简化 Java 代码(尤其是 JavaBean 里的 getter/setter/toString/equals 等)。
    • 作用:减少样板代码(Boilerplate Code),让代码更简洁。
  • 原理
    • 编译时(Annotation Processing Tool,APT),Lombok 会在字节码层面插入对应的方法。
    • 在源码里看不到 getXxx() / setXxx(),但编译后 class 文件里存在。

二、Lombok 常用注解及使用方法

1. 基础注解

注解作用示例
@Getter生成所有字段的 getter 方法@Getter private String name;
@Setter生成所有字段的 setter 方法@Setter private int age;
@ToString生成 toString() 方法@ToString class User {...}
@EqualsAndHashCode生成 equals() 和 hashCode()常和 @Data 一起用

2. 组合注解

注解作用
@Data相当于 @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor
@Value不可变类(final 类 + final 属性 + 只有 getter)
@Builder生成建造者模式(链式调用构建对象)

示例

import lombok.Data;
import lombok.Builder;

@Data
@Builder
public class User {
    private String name;
    private int age;
}

使用:

User user = User.builder()
                .name("阿杰")
                .age(25)
                .build();

System.out.println(user); 
// 输出:User(name=阿杰, age=25)


3. 构造器相关注解

注解作用
@NoArgsConstructor无参构造器
@AllArgsConstructor全参构造器
@RequiredArgsConstructor只包含 final 字段或 @NonNull 字段的构造器

4. 其他常用注解

注解作用
@Slf4j自动生成 log 日志对象
@SneakyThrows省略 throws 声明,自动包装异常
@Cleanup自动关闭资源(类似 try-with-resources)
@NonNull给参数做非空校验,空值时报 NPE

示例

import lombok.Cleanup;
import lombok.SneakyThrows;
import java.io.*;

public class FileDemo {

    @SneakyThrows
    public void readFile(String path) {
        @Cleanup FileReader reader = new FileReader(path);
        @Cleanup BufferedReader br = new BufferedReader(reader);
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    }
}


三、Lombok 使用方法

1. 引入依赖(Maven 示例)

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.32</version> <!-- 版本号根据需要 -->
    <scope>provided</scope>
</dependency>

scope=provided:说明只在编译时需要,运行时不需要。

2. IDEA 配置

  • 安装 Lombok 插件(File → Settings → Plugins → 搜索 Lombok)
  • 启用 Annotation Processing(File → Settings → Build → Compiler → Annotation Processors → 勾选 Enable annotation processing)

四、总结

✅ 优点

  1. 大幅减少样板代码(getter/setter/构造器/log 等)。
  2. 提高开发效率和代码可读性。
  3. 常见设计模式(Builder、不可变对象)可快速生成。

⚠️ 缺点/注意点

  1. 隐藏代码 → 源码里看不到,调试时要习惯反编译 class 文件。
  2. IDE 依赖 → 需要插件支持,否则编译/提示可能报错。
  3. 可维护性 → 初学者可能看不懂,团队需要统一规范。

👉 总结一句话:
Lombok 适合快速开发和减少冗余代码,但要注意团队规范和调试成本。