一、最常用:@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)";
}
支持:
excludecallSuper
六、@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 |