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 衝突,唯一的缺點就是提高了一點點維護成本。