为现有 Java 类批量添加 {'@'}Data / {'@'}Builder 等注解。

切换工具
类级注解:选项:
Java 输入
生成结果

使用说明

用途

Lombok 代码生成工具,根据 Java 类的字段列表自动生成对应的 Lombok 注解组合(@Data / @Builder / @Getter / @Setter / @AllArgsConstructor / @NoArgsConstructor / @ToString / @EqualsAndHashCode),并展示等价的原始 getter / setter / equals / hashCode / toString / Builder 模式代码。常用于学习 Lombok 注解作用、生成不依赖 Lombok 的等价代码(项目禁用 Lombok 时)、代码审查时核对生成内容。所有生成在浏览器本地完成。

操作步骤

  1. 左侧输入 Java 字段列表(字段名 + 类型 + 注释)
  2. 勾选要应用的 Lombok 注解:@Data / @Builder / @Slf4j 等
  3. 右侧实时输出含 Lombok 注解的完整类
  4. 同时显示"等价原始代码":手写 getter setter equals 长版
  5. 切换 Lombok 模式:极简(@Data 一行解决)/ 显式(每个注解独立)
  6. Builder 模式:选 Lombok @Builder / 原始 Builder 静态内部类
  7. 不可变类(final 字段)选 @Value 替代 @Data
  8. 日志注解:@Slf4j / @Log4j2 / @CommonsLog 任选

常见问题

为什么有些项目不让用 Lombok?
反对者观点: 1) **隐式代码**(注解生成的 getter setter equals 不可见),新人看不懂;2) **依赖编译期处理器**(lombok.jar),构建工具配置复杂;3) **IDE 兼容性历史问题**(早期 IntelliJ / Eclipse 要装插件,现在好多了);4) **重构难度**(refactor 操作可能漏掉 Lombok 生成的方法)。支持者: 1) **减少模板代码** 50-80%;2) **可读性**(@Data 比手写 getter 更聚焦业务字段)。**实际**: 主流 Java 项目 70%+ 用 Lombok。
@Data 和 @Value 有什么区别?
**@Data**: 等价于 @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor。**生成可变 POJO**。**@Value**: 等价于 @Getter + @AllArgsConstructor + @ToString + @EqualsAndHashCode + final(**所有字段 final,类 final**)。**生成不可变值对象**。**用法**: VO / DTO(数据传输用,可能改)用 @Data;不可变实体(@Value 对象、配置类、坐标类)用 @Value。
Lombok 的 equals/hashCode 怎么生成?
**@EqualsAndHashCode 默认**: 用类的所有非静态、非 transient 字段计算。**callSuper = true**: 包括父类字段(继承场景必须设,否则父类字段不参与)。**onlyExplicitlyIncluded = true**: 只用 @EqualsAndHashCode.Include 标记的字段(常用于 JPA Entity,避免 @Id 之外的字段引起 hashCode 不稳定)。
Lombok 项目 IDE 不识别注解?
IntelliJ IDEA: 装 Lombok Plugin(新版自带)+ 开启 "Enable annotation processing"(Settings → Compiler → Annotation Processors)。**Eclipse**: 下载 lombok.jar 双击运行安装到 eclipse.ini。**VS Code**: 装 Lombok Annotations Support 扩展。所有 IDE 都要在 pom.xml / build.gradle 加 lombok 依赖。
@Builder 怎么用?嵌套对象呢?
基本用法: `User.builder().name("Tom").age(30).build()`。**复杂场景**: @Builder.Default(字段有默认值时必须加,否则 builder 生成时丢默认值);@Singular(List / Set 字段用,提供 `.tag("x").tag("y")` 而不是 `.tags(List.of("x","y"))`)。**嵌套 Builder**: 内嵌对象本身也需要 @Builder,调用时 `.address(Address.builder()...build())`。

应用场景

  • 新 Java 类生成:定义字段后一键加 Lombok 注解
  • 不能用 Lombok 项目:用工具生成等价原始代码
  • 学习 Lombok:看 @Data 等价手写代码理解作用
  • Code Review:核对 @Builder 等复杂注解生成的实际效果
  • 迁移老项目:手写 getter/setter 转 Lombok 注解

适用场景

新建 Java 类、不用 Lombok 项目兼容、Lombok 学习、Code Review、老项目迁移。Java 后端、技术教练、Code Reviewer 常用。Lombok / 等价原始双显、@Data 与 @Value 对照、Builder 模式生成是关键差异点。