Lombok 使用指南:让 Java 更简洁

发表于 2025-09-14 15:02:20 分类于 默认分类 阅读量 45

Lombok 使用指南:让 Java 更简洁

Lombok 是一个 Java 库,通过注解生成常用方法(如 getter/setter、构造方法、toString 等),大幅减少样板代码,提高开发效率。

下面我们总结 Lombok 的常用注解及示例。


1. @Getter@Setter

为类的字段自动生成 getter 和 setter 方法。

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class User {
    private String name;
    private int age;
}

// 使用
User user = new User();
user.setName("Tom");
System.out.println(user.getName());
  • @Getter:生成 getXxx() 方法
  • @Setter:生成 setXxx() 方法

2. @ToString

自动生成 toString() 方法,方便打印对象。

import lombok.ToString;

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

// 输出
User user = new User();
user.setName("Tom");
user.setAge(18);
System.out.println(user); // User(name=Tom, age=18)

3. @EqualsAndHashCode

自动生成 equals()hashCode() 方法。

import lombok.EqualsAndHashCode;

@EqualsAndHashCode
public class User {
    private String name;
    private int age;
}
  • 支持指定字段:@EqualsAndHashCode(of = {"name"})

4. @Data

综合注解,相当于同时使用:

@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor
import lombok.Data;

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

// 使用
User user = new User();
user.setName("Tom");
System.out.println(user);

5. 构造方法注解

@NoArgsConstructor

生成无参构造方法,常用于序列化或框架反射。

import lombok.NoArgsConstructor;

@NoArgsConstructor
public class User {
    private String name;
}

@AllArgsConstructor

生成全参构造方法。

import lombok.AllArgsConstructor;

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

// 使用
User user = new User("Tom", 18);

@RequiredArgsConstructor

生成 final 字段或 @NonNull 字段的构造方法。

import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class User {
    private final String name;
    private int age;
}

// 使用
User user = new User("Tom"); // age 默认未设置

6. @Builder

生成 Builder 模式,适合字段多或可选参数多的类。

import lombok.Builder;

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

// 使用
User user = User.builder()
        .name("Tom")
        .age(18)
        .build();
  • 可链式调用
  • 对象构建更清晰

7. 其他常用注解

注解功能
@SneakyThrows自动抛出受检异常,省略 try-catch
@Slf4j自动生成日志对象 log
@NonNull参数非空校验,自动抛出 NullPointerException
@Accessors(chain = true)链式 setter,可连续调用 .setX().setY()

8. Lombok 小技巧

  1. 链式调用
import lombok.Data;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)
public class User {
    private String name;
    private int age;
}

// 使用
User user = new User().setName("Tom").setAge(18);
  1. 日志快速打印
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class App {
    public void run() {
        log.info("程序启动");
    }
}
  1. 非空检查
import lombok.NonNull;

public void printName(@NonNull String name) {
    System.out.println(name);
}

总结

  • Lombok 可以显著减少 Java 样板代码,提高开发效率
  • 核心注解:@Getter@Setter@ToString@EqualsAndHashCode@Data@Builder
  • 构造方法注解:@NoArgsConstructor@AllArgsConstructor@RequiredArgsConstructor
  • 高级功能:日志、链式调用、非空检查

使用 Lombok 后,代码简洁可读,维护成本更低,是现代 Java 项目推荐实践。

正物博客
一路向前,山海自平