Использование @RequiredArgsConstructor на условном конструкторе - PullRequest
0 голосов
/ 17 апреля 2020

Я использую Lombok для перемещения всех жестко закодированных публичных / частных конструкторов во всем моем проекте. Вот особый вариант использования, где есть две переменные-члены. Но один параметр передается как параметр в конструкторе для установки свойства. Как я могу использовать @RequiredArgsConstructor в этом сценарии:

Как я могу использовать @RequiredArgsConstructor для преобразования этого конструктора?

public ObjectToString(final String delimiter) {
        this.delimiter = delimiter;
        this.functions = new ArrayList<>();
    }

Шаблон класса:

public final class ObjectToString {

    private final String delimiter;
    private final List<String> functions;

    public ObjectToString(final String delimiter) {
        this.delimiter = delimiter;
        this.functions = new ArrayList<>();
    }

    public ObjectToString add(final List<String> func) {
        functions.add(func);
        return this;
    }
///Next lines follows the class implementation code.
}

1 Ответ

1 голос
/ 17 апреля 2020

Попробуйте так:

@RequiredArgsConstructor
public final class ObjectToString {

    private final String delimiter;
    private final List<String> functions = new ArrayList<>();

    public ObjectToString add(final List<String> func) {
        functions.add(func);
        return this;
    }

   // Rest excluded

}

В вашем случае нет необходимости создавать массив в конструкторе. Если вы инициализируете свое поле следующим образом, lombok не создаст для него параметр в конструкторе.

Соответствующая часть документации lombok:

@ RequiredArgsConstructor генерирует конструктор с 1 параметром для каждого поля, которое требует специальной обработки. Все неинициализированные конечные поля получают параметр , а также любые поля, помеченные как @NonNull, которые не инициализированы там, где они объявлены. От: https://projectlombok.org/features/constructor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...