Lombok @Builder 不适用于继承用例:
例如
class Foo{
protected int xyz1;
.....
protected String xyz7;
}
class Bar extends Foo{
}
对于给定的用例,Lombok 将无法生成方法来设置 Foo 类中定义的参数值。
解决方法是:
- 手动创建 Bar 的构造函数。
- 在该构造函数上放置一个 Builder 注释。
有更好的解决方法吗?
请您参考如下方法:
Lombok 在版本:1.18.2 中引入了实验性功能,用于解决 Builder 注解面临的继承问题,可以通过 @SuperBuilder 注解解决,如下所示。
@SuperBuilder
public class ParentClass {
private final String a;
private final String b;
}
@SuperBuilder
public class ChildClass extends ParentClass{
private final String c;
}
现在,可以使用如下所示的 Builder 类(使用 @Builder 注释是不可能的)
ChildClass.builder().a("testA").b("testB").c("testC").build();