Сгенерированный код для @SuperBuilder
сложен и загружен с параметрами типа. Поэтому рекомендуется delombok
ваш класс и использовать вывод как ссылку.
Вы можете сделать это с помощью этой команды:
java -jar path/to/lombok.jar delombok -p path/to/src/main/java/Child.java
Результат покажет, какой код генерирует ломбок . Я предполагаю, что класс Child
не является абстрактным (думаю, у вас есть опечатка в ваших вопросах). Вы хотите настроить метод build()
, поэтому вас интересует ChildBuilderImpl
, потому что этот класс содержит этот метод. Вы можете скопировать заголовок класса в исходный файл и добавить свой собственный метод build()
:
private static final class ChildBuilderImpl extends Child.ChildBuilder<Child, Child.ChildBuilderImpl> {
@java.lang.Override
public Child build() {
// Do validation here, e.g.:
if (((Child.ChildBuilder<?, ?>)this).b == 0)
throw new IllegalArgumentException("b must not be 0");
return new Child(this);
}
}
Примечание: я бы предпочел выполнить проверку в конструкторе, потому что в противном случае вы могли бы программно вызвать конструктор без значения проверяются. Однако в настоящее время настройка конструктора @SuperBuilder
невозможна; это будет возможно со следующим выпуском ломбока. Я обновлю этот вопрос, когда он будет выпущен.