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 冲突,唯一的缺点就是提高了一点点维护成本。