Lombok 可以生成哪些类方法

一、最常用:@Data

java 复制代码
@Data
public class User {
    private String name;
    private int age;
}

等价于同时生成:

✔ Getter

✔ Setter

✔ toString()

✔ equals()

✔ hashCode()

✔ 必要构造方法(@RequiredArgsConstructor 行为)

换句话说,@Data =

@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor


二、精细控制 Getter / Setter

java 复制代码
@Getter
@Setter
public class User {
    private String name;
}

生成:

  • public String getName()
  • public void setName(String name)

也可以作用在字段级别,仅生成某个字段的 getter/setter。


三、构造方法

1️⃣ 无参构造

java 复制代码
@NoArgsConstructor

生成:

java 复制代码
public User() {}

2️⃣ 全参构造

java 复制代码
@AllArgsConstructor

生成:

java 复制代码
public User(String name, Integer age) { ... }

3️⃣ 必要参数构造(final / @NonNull 字段)

java 复制代码
@RequiredArgsConstructor

例:

java 复制代码
@RequiredArgsConstructor
public class User {
    @NonNull private String name;
    private Integer age;
}

生成:

java 复制代码
public User(String name) {}

四、@Builder ------ 生成 Builder 模式

java 复制代码
@Builder
public class User {
    private String name;
    private Integer age;
}

生成:

✔ 静态 builder() 方法

✔ 链式设置方法

✔ build() 方法

✔ 对应构造器

使用:

java 复制代码
User u = User.builder()
        .name("Tom")
        .age(20)
        .build();

五、@ToString

java 复制代码
@ToString

生成:

java 复制代码
public String toString() {
   return "User(name=xxx, age=xx)";
}

支持:

  • exclude
  • callSuper

六、@EqualsAndHashCode

java 复制代码
@EqualsAndHashCode

生成:

  • equals()
  • hashCode()

支持:

  • 是否包含父类
  • 排除字段

七、@Value(不可变对象)

java 复制代码
@Value
public class User {
    String name;
    int age;
}

生成:

✔ private final 字段

✔ getter

✔ equals / hashCode

✔ toString

✔ 全参构造

✔ 无 setter(不可变对象)


八、日志方法

例如:

java 复制代码
@Slf4j
public class Test {}

生成:

java 复制代码
private static final Logger log = LoggerFactory.getLogger(Test.class);

你可以直接写:

java 复制代码
log.info("hello");

其他:

  • @Log
  • @Log4j
  • @Log4j2
  • @Slf4j
  • @XSlf4j

九、@Accessors

链式调用:

java 复制代码
@Accessors(chain = true)

生成:

java 复制代码
user.setName("Tom").setAge(18);

十、一页总结:Lombok 能生成什么?

注解 生成
@Getter getter
@Setter setter
@Data getter + setter + toString + equals + hashCode + 必要构造
@ToString toString
@EqualsAndHashCode equals + hashCode
@NoArgsConstructor 无参构造
@AllArgsConstructor 全参构造
@RequiredArgsConstructor 关键字段构造
@Value 不可变类 + getter + equals + hashCode + toString + 全参构造
@Builder builder() + 链式构建
@Slf4j 日志对象
@Accessors(chain = true) 链式 setter

相关推荐
知守观3 分钟前
多模块架构演进:横向分层 vs 纵向领域,13 个真实项目的切分对照
java·后端·微服务
Java成神之路-18 分钟前
Java String 为什么不可变?和 HashMap 到底有什么关系?
java
paopaokaka_luck21 分钟前
基于springboot+vue的益暖微光公益服务平台(DeepSeek公益助手、善款信息追溯、志愿服务积分闭环、ECharts运营分析、活动状态自动流转)
java·前端·javascript·spring boot·mysql·架构·echarts
文丑颜不良啊32 分钟前
LeetCode1401~1420题目解析
java·leetcode
Nuanyt34 分钟前
LeetCode Hot 100 链表专题2 3 题 (Java)
java·笔记·算法·leetcode·链表
文丑颜不良啊41 分钟前
LeetCode1341~1360题目解析
java·leetcode
QianhangQianping1 小时前
撤销重做不是「存快照」:一个可视化编辑器的Operation 设计
java·前端·数据库·typescript·编辑器·前端架构·撤销重做
海绵宝宝转agent1 小时前
LeetCodehot100题解
java·笔记·学习·算法·leetcode·深度优先
SunnyDays10111 小时前
Java 操作 Word 脚注和尾注:添加、读取与删除
java·word
SunnyDays10111 小时前
Java 为 Word 添加页码:隐藏封面页码、从指定页开始编号、奇偶页页码设置等
java·word·页码