Java中lombok是什么,干什么用的

Lombok 是 Java 世界里一个非常受欢迎的「代码生成工具」,也可以理解为“偷懒神器”。
一句话总结:帮你自动写样板代码(boilerplate),让实体类/POJO/Bean 瞬间瘦身


1. 它到底干什么?

在 Java 里,一个最简单的数据类往往要写大量重复代码:

public class User {
    private Long id;
    private String name;

    // 构造器
    public User() {}
    public User(Long id, String name) { ... }

    // Getter / Setter
    public Long getId() { ... }
    public void setId(Long id) { ... }
    public String getName() { ... }
    public void setName(String name) { ... }

    // toString
    @Override
    public String toString() { ... }

    // equals & hashCode
    @Override
    public boolean equals(Object o) { ... }
    @Override
    public int hashCode() { ... }
}

用了 Lombok 后,只需:

@Data                   // 自动加上 getter/setter/toString/equals/hashCode
@AllArgsConstructor     // 全参构造
@NoArgsConstructor      // 无参构造
public class User {
    private Long id;
    private String name;
}

编译期 Lombok 会帮你把缺失的代码生成到 .class 文件里,源码依然简洁。


2. 核心注解速查表

注解作用
@Getter / @Setter生成 getter / setter
@ToString生成 toString
@EqualsAndHashCode生成 equals 和 hashCode
@Data相当于上面四个合体
@NoArgsConstructor / @AllArgsConstructor / @RequiredArgsConstructor各种构造器
@Builder流式建造器 User.builder().id(1L).name("Tom").build()
@Slf4j / @Log4j2自动在类里注入日志对象 log.info(...)
@Value不可变对象(final 字段 + 全参构造 + getter)

3. 工作原理

  • 注解处理器(Annotation Processor):在编译阶段扫描注解,通过修改抽象语法树(AST)把代码插进去,源码文件本身不会被改动。
  • IDE(IntelliJ IDEA / Eclipse)需要安装 Lombok 插件,否则 IDE 会报“找不到符号”。

4. 优缺点

✅ 优点

  • 极大减少样板代码,提升可读性。
  • 避免手写错误(比如漏写 equals 导致 HashMap 异常)。
  • 与主流构建工具(Maven/Gradle)和框架(Spring/JPA)兼容良好。

❌ 缺点

  • 团队需要统一使用,否则新人会“看不懂魔法”。
  • 过度使用(如 @Data 一股脑全加)可能暴露过多方法,违背封装。
  • 升级 JDK 或 Lombok 版本时偶尔踩坑(但社区更新快)。

5. 快速上手

Maven 依赖:

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

IDEA 用户:
Settings → Plugins → 搜索 Lombok → Install → 重启即可。


一句话总结:**Lombok 让你把“写 Java 对象”从 50 行压缩到 5 行,代码更聚焦业务,而不是机械劳动。**Lombok 是 Java 世界里一个非常受欢迎的「代码生成工具」,也可以理解为“偷懒神器”。
一句话总结:帮你自动写样板代码(boilerplate),让实体类/POJO/Bean 瞬间瘦身


1. 它到底干什么?

在 Java 里,一个最简单的数据类往往要写大量重复代码:

public class User {
    private Long id;
    private String name;

    // 构造器
    public User() {}
    public User(Long id, String name) { ... }

    // Getter / Setter
    public Long getId() { ... }
    public void setId(Long id) { ... }
    public String getName() { ... }
    public void setName(String name) { ... }

    // toString
    @Override
    public String toString() { ... }

    // equals & hashCode
    @Override
    public boolean equals(Object o) { ... }
    @Override
    public int hashCode() { ... }
}

用了 Lombok 后,只需:

@Data                   // 自动加上 getter/setter/toString/equals/hashCode
@AllArgsConstructor     // 全参构造
@NoArgsConstructor      // 无参构造
public class User {
    private Long id;
    private String name;
}

编译期 Lombok 会帮你把缺失的代码生成到 .class 文件里,源码依然简洁。


2. 核心注解速查表

注解作用
@Getter / @Setter生成 getter / setter
@ToString生成 toString
@EqualsAndHashCode生成 equals 和 hashCode
@Data相当于上面四个合体
@NoArgsConstructor / @AllArgsConstructor / @RequiredArgsConstructor各种构造器
@Builder流式建造器 User.builder().id(1L).name("Tom").build()
@Slf4j / @Log4j2自动在类里注入日志对象 log.info(...)
@Value不可变对象(final 字段 + 全参构造 + getter)

3. 工作原理

  • 注解处理器(Annotation Processor):在编译阶段扫描注解,通过修改抽象语法树(AST)把代码插进去,源码文件本身不会被改动。
  • IDE(IntelliJ IDEA / Eclipse)需要安装 Lombok 插件,否则 IDE 会报“找不到符号”。

4. 优缺点

✅ 优点

  • 极大减少样板代码,提升可读性。
  • 避免手写错误(比如漏写 equals 导致 HashMap 异常)。
  • 与主流构建工具(Maven/Gradle)和框架(Spring/JPA)兼容良好。

❌ 缺点

  • 团队需要统一使用,否则新人会“看不懂魔法”。
  • 过度使用(如 @Data 一股脑全加)可能暴露过多方法,违背封装。
  • 升级 JDK 或 Lombok 版本时偶尔踩坑(但社区更新快)。

5. 快速上手

Maven 依赖:

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

IDEA 用户:
Settings → Plugins → 搜索 Lombok → Install → 重启即可。


一句话总结:Lombok 让你把“写 Java 对象”从 50 行压缩到 5 行,代码更聚焦业务,而不是机械劳动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值