lombok
大幅度缩减代码的编写量。
@Builder 与序列化的冲突
有时候使用 @Builder
,此注解默认会使得无参构造器私有化。
然而 json 反序列化的时候,需要无参构造器。
如下使用即可
@Data
@Builder
public class OutNotifyCbMessage implements Serializable {
@Tolerate
public OutNotifyCbMessage() {
}
}
当存在继承时
当子类继承父类的时候,想使用父类中的字段,应该如何使用?
定义
@AllArgsConstructor
public class Parent {
private String a;
}
public class Child extends Parent {
private String b;
@Builder
private Child(String a, String b){
super(a);
this.b = b;
}
}
使用
Child.builder().a("testA").b("testB").build();
拓展使用
maven 编译报错
报错信息
现象:idea 测试方法可以正常执行,但是 mvn clean install
程序报错
报错如下:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project poseidon: C
ompilation failure: Compilation failure:
排查过程
(1)idea annotation 已启动,排除
(2)maven 插件已是最新版本,排除版本低的问题
(3)并没有其他 lombok 的导入冲突。
问题解决
最后发现是 maven 编译插件的配置
<configuration>
<source>${project.compiler.level}</source>
<target>${project.compiler.level}</target>
<encoding>${project.build.sourceEncoding}</encoding>
<compilerArgument>-proc:none</compilerArgument>
</configuration>
<compilerArgument>-proc:none</compilerArgument>
这句话会导致 lombok 相关的注解无法生效。
注释掉即可。