В отличие от @Builder
, @SuperBuilder
генерирует два класса строителей: public
и private
один. Оба сильно загружены обобщениями для обеспечения правильного вывода типа.
Если вы хотите добавить или изменить метод в классе построителя, вы должны взглянуть на ненастроенный код delombok
ed и скопировать и вставить public abstract static class
заголовок оттуда. В противном случае вы, скорее всего, ошибетесь в обобщениях, что приведет к ошибкам компилятора, которые вы не сможете исправить. Также посмотрите на return
типы и операторы сгенерированных методов, чтобы убедиться, что вы правильно их определили.
@SuperBuilder
документация также упоминает это:
В связи с интенсивным использованием универсальных шаблонов настоятельно рекомендуем скопировать заголовок определения класса компоновщика из ненастроенного кода с разделителями.
В вашем случае вы должны настроить компоновщик следующим образом:
public static abstract class UserBuilder<C extends User, B extends User.UserBuilder<C, B>> {
public B password(final int password) {
this.password = ENCODER.encode(password);
return self();
}
}