lombok 总结
依赖来源:
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
特殊情况说明
@Value 与 @Setter 共用
- @Value 注解
- 不可变类:@Value 注解用于生成不可变类(immutable class)。
- 生成的方法:
- 全参构造函数:生成一个带有所有字段参数的构造函数。
- getter 方法:为所有字段生成 getter 方法。
- toString 方法:生成 toString 方法。
- equals 和 hashCode 方法:生成 equals 和 hashCode 方法。
- 字段修饰符:所有字段默认是 private 和 final 的,表示它们是不可变的。
- setter 方法:不生成 setter 方法,因为字段是不可变的。
- @Getter 和 @Setter 注解
- @Getter:为所有字段生成 getter 方法。
- @Setter:为所有字段生成 setter 方法。
矛盾点:当你在一个类上同时使用 @Value 和 @Setter 注解时,会出现矛盾
:
- @Value:生成不可变类,字段默认是 final 的,不允许修改。
- @Setter:生成 setter 方法,允许修改字段的值。
实际效果:
Lombok 在处理这些注解时,会优先考虑 @Value 注解的要求。因此,即使你同时使用了 @Setter 注解,Lombok 也不会为 final 字段生成 setter 方法。这是因为 final 字段在构造函数中初始化后,不能再被修改。