0
点赞
收藏
分享

微信扫一扫

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


举报

相关推荐

0 条评论