给定以下带有 Lombok 注释的类@Data
and @SuperBuilder
@Data
@SuperBuilder
public abstract class Parent {
protected final String userId;
protected final Instant requestingTime;
}
@Data
@SuperBuilder
public class Child extends Parent {
private final Instant beginningDate;
private final Instant endingDate;
private final Collection<String> fields;
}
我收到以下错误@Data
中的注释Child
class:
隐式超级构造函数 Parent() 未定义。必须显式调用另一个构造函数。
有没有办法在上配置非默认构造函数Child
班级的@Data
注释以便拥有所有final
两个字段Child
and Parent
调用 Builder 时初始化的类?
我尝试了几种不同的组合@Data
, @Getter
, @Setter
注释与@SuperBuilder
对子类和父类都进行了注释,但尚未找到可行的解决方案。我正在使用龙目岛 1.18.10。
以供参考,this https://stackoverflow.com/questions/51208842/how-to-implements-lombok-builder-for-abstract-class问题是相关的
EDIT
这实际上是 Lombok 应该构建并调用的构造函数SuperBuilder.build()
手术。
public Child(
final String userId,
final Instant requestingTime,
final Instant beginningDate,
final Instant endingDate,
final Collection<String> fields) {
super(userId, requestingTime);
this.beginningDate = beginningDate;
this.endingDate = endingDate;
this.fields= fields;
}
根据要求,这就是我期望调用构建器的方式Child
object.
final Child child = Child.Builder()
.userId(<value>)
.requestingTime(<value>)
.beginningDate(<value>)
.endingDate(<value>)
.fields(<value>)
.build();