Java Lombok 库:继承的构建器注释问题
Java Lombok library : builder annotation issues with Inheritance
Java Lombok 库:构建器注释与继承有关
@Builder
public class ParentClass {
private final String a;
private final String b;
}
@Builder
public class ChildClass extends ParentClass{
private final String c;
}
创建子 class 实例时,父 class 属性在 Builder 注释中不可见。
以下失败:
ChildClass.builder().a("testA").b("testB").c("testC").build();
但是,下面的说法是正确的:
ChildClass.builder().c("testC").build();
这个issue好像很久了,不知道最新版本有没有修复。
问题是,当您使用@Builder 注释定义 ParentClass 时,它会创建 ParentClass(String) 构造函数并删除隐式构造函数。那么Childclass连创建都无法创建
请看下面的回答:
how to Call super constructor in Lombok
最新的 lombok 版本 1.18.2 包括 the new experimental @SuperBuilder
。它正是为此添加的:从超类设置字段。
Java Lombok 库:构建器注释与继承有关
@Builder
public class ParentClass {
private final String a;
private final String b;
}
@Builder
public class ChildClass extends ParentClass{
private final String c;
}
创建子 class 实例时,父 class 属性在 Builder 注释中不可见。
以下失败:
ChildClass.builder().a("testA").b("testB").c("testC").build();
但是,下面的说法是正确的:
ChildClass.builder().c("testC").build();
这个issue好像很久了,不知道最新版本有没有修复。
问题是,当您使用@Builder 注释定义 ParentClass 时,它会创建 ParentClass(String) 构造函数并删除隐式构造函数。那么Childclass连创建都无法创建
请看下面的回答:
how to Call super constructor in Lombok
最新的 lombok 版本 1.18.2 包括 the new experimental @SuperBuilder
。它正是为此添加的:从超类设置字段。