【问题标题】:Java Lombok library : builder annotation issues with InheritanceJava Lombok 库:与继承有关的构建器注释问题
【发布时间】:2019-01-12 09:12:06
【问题描述】:

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

这个问题好像很久了,不知道最新版本有没有修复。

【问题讨论】:

    标签: java inheritance lombok


    【解决方案1】:

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

    【讨论】:

    • 感谢 Jan。我能够通过在 lombok 版本 1.18.2 中作为实验性引入的 @SuperBuilder 注释解决上述问题。
    【解决方案2】:

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

    请看下面的答案: how to Call super constructor in Lombok

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-17
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多