问题1:@Data 和 @Builder 致使无参构造丢失
现象
- 单独使用 @Data 注解,是会生成无参数构造方法。
- 单独使用 @Builder 注解,发现生成了全属性的构造方法。
- @Data 和 @Builder 一块儿用:咱们发现没有了默认的构造方法。若是手动添加无参数构造方法或。用 @NoArgsConstructor 注解都会报错!
两种解决方法
1. 构造方法加上 @Tolerate 注解,让 lombok 伪装它不存在(不感知)
@Builder
@Data
public class TestLombok {
@Tolerate
TestLombok() {
}
......
}
2. 直接加上这 4 个注解
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TestLombok {
......
}
问题2:@Builder 注解致使默认值无效
现象
使用 Lombok 注解能够极高的简化代码量,比较好用的注解除了 @Data 以外,还有 @Builder 这个注解,它可让你很方便的使用 builder 模式构建对象,可是今天发现 @Builder 注解会把对象的默认值清掉。
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TestLombok {
private String aa = "zzzz";
public static void main(String[] args) {
TestLombok build = TestLombok.builder().build();
System.out.println(build);
}
输出:TestLombok(aa=null)