import lombok.Builder;
@Builder
public class B extends A {
}
import lombok.Builder;
@Builder
public class A {
}
以上@Builder在继承关系中这么写,肯定报错!
解决方案
方案一
@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;
}
}
Ps:但是想对 Parent 类进行 build 操作就无法了。
方案二
@SuperBuilder
public class B extends A {
private String b;
}
@SuperBuilder
public class A {
private String a;
}
B instance = B.builder().b("b").a("a").build();
Ps:都很好,但是与mybatis连用的时候会报错:The alias '' is already mapped to the value。
方案三
取消 extends 关系,把父类的属性都挪过来,这样既能各自 @Builder,而且也不会与 mybatis 冲突,唯一的缺点就是提高了一点点维护成本。