Java Lombok库:继承的生成器批注问题

时间:2018-08-04 23:02:25

标签: java inheritance lombok

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();

该问题似乎已经存在很长时间了,不知道任何最新版本是否有修复程序。

2 个答案:

答案 0 :(得分:2)

最新的lombok版本1.18.2包含the new experimental @SuperBuilder。正是为此添加的:从超类设置字段。

答案 1 :(得分:1)

问题在于,当使用@Builder批注定义ParentClass时,它将创建ParentClass(String)构造函数并删除隐式构造函数。然后甚至无法创建Child类。

请查看以下答案: how to Call super constructor in Lombok