Java Lombok库:带有继承的生成器批注问题
@Builder
public class ParentClass {
private final String a;
private final String b;
}
@Builder
public class ChildClass extends ParentClass{
private final String c;
}
创建子类的实例时,父类属性在Builder批注中不可见。
以下失败:
ChildClass.builder().a("testA").b("testB").c("testC").build();
但是,以下陈述是正确的:
ChildClass.builder().c("testC").build();
该问题似乎已经存在很长时间了,不知道任何最新版本是否有修复程序。
答案 0 :(得分:2)
最新的lombok版本1.18.2包含the new experimental @SuperBuilder
。正是为此添加的:从超类设置字段。
答案 1 :(得分:1)
问题在于,当使用@Builder批注定义ParentClass时,它将创建ParentClass(String)构造函数并删除隐式构造函数。然后甚至无法创建Child类。
请查看以下答案:
how to Call super constructor in Lombok