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

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