Учитывая следующие классы с аннотациями Lombok @Data
и @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
:
Неявный супер-конструктор Parent () не определен. Должен явно вызывать другой конструктор.
Есть ли способ настроить конструктор не по умолчанию в аннотации Child
класса *1014*, чтобы иметь все поля final
в обоих Child
и Parent
классы инициализируются при вызове Builder?
Я пробовал несколько разных комбинаций аннотаций @Data
, @Getter
, @Setter
с аннотацией @SuperBuilder
как для дочернего, так и для дочернего элементов. родительские классы, но еще не нашли рабочего решения. Я использую Lombok 1.18.10.
Для справки этот вопрос связан
РЕДАКТИРОВАТЬ
Это фактически тот конструктор, который Ломбок должен создавать и вызывать для операции 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
.
final Child child = Child.Builder()
.userId(<value>)
.requestingTime(<value>)
.beginningDate(<value>)
.endingDate(<value>)
.fields(<value>)
.build();