Lombok - Does lombok @Builder allow extends

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章