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 小技巧
- 链式调用
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);
- 日志快速打印
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class App {
public void run() {
log.info("程序启动");
}
}
- 非空检查
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 项目推荐实践。