代码之家  ›  专栏  ›  技术社区  ›  Amit Kaneria

Java Lombok库:带有继承的builder注释问题

  •  0
  • Amit Kaneria  · 技术社区  · 6 年前

    Java Lombok库:带有继承的builder注释问题

        @Builder
        public class ParentClass {
            private final String a;
            private final String b;
        }
    
        @Builder
        public class ChildClass extends ParentClass{
            private final String c;
        }
    

    创建子类的实例时,父类属性在生成器批注中不可见。

    以下故障:

         ChildClass.builder().a("testA").b("testB").c("testC").build();
    

    但是,以下陈述是正确的:

         ChildClass.builder().c("testC").build();
    

    似乎这个问题是开放了很长时间,不知道是否有任何最新版本有任何修复。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Jan Rieke    6 年前

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

        2
  •  1
  •   Mike    6 年前

    问题是,当使用@Builder注释定义ParentClass时,它会创建ParentClass(字符串)构造函数并删除隐式构造函数。然后甚至不能创建子类。

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