当底层劳动人民帮我们把活干了,我们就会发现,活变少了。
1. 定义对象后,get和set属性生成
a. 手动的一个个写getter和setter--最古老的方式
b.通过注解来实现
1) 通过Accessors注解
Lombok的@Accessors注解主要用于控制类中字段的getter和setter方法的生成行为。一般和@Getter @Setter 一起使用。
它可以通过配置不同的属性来定制生成的getter和setter方法的命名风格和行为。
@Accessors注解主要有两个属性:
1.1.1) chain:类型为boolean,默认值为false。如果设置为true,生成的setter方法会返回当前对象(即this),从而支持链式调用(Fluent API)
@Accessors(chain = true)
public class User {
private String name;
private int age;
}
1.1.2)使用链式调用
User user = new User().setName("Alice").setAge(25);
1.2.1) fluent:类型为boolean,默认值为false。如果设置为true,生成的getter和setter方法会省略get和set前缀,直接使用字段名作为方法名。
@Accessors(fluent = true)
public class User {
private String name;
private int age;
}
1.2.2) 使用调用链
User user = new User().name("Alice").age(25);
2)使用@Data注解
@Data
是一个复合注解,它相当于同时使用了以下注解:
-
@Getter
- 为所有字段生成getter方法 -
@Setter
- 为所有非final字段生成setter方法 -
@ToString
- 生成toString()方法 -
@EqualsAndHashCode
- 生成equals()和hashCode()方法 -
@RequiredArgsConstructor
- 生成包含所有final字段的构造器
两个注解的区别
特性 | @Data | @Accessors |
---|---|---|
功能 | 复合多个注解功能 | 控制getter/setter的生成方式 |
用途 | 快速生成POJO的基本方法 | 定制getter/setter的行为 |
独立性 | 可以单独使用 | 通常需要与@Getter/@Setter/@Data一起使用 |
配置项 | 无 | 有chain、fluent、prefix等配置 |
@Data
用于快速生成一个完整的POJO,而@Accessors
用于对生成的getter/setter方法进行更精细的控制。