Подтвердить что ты не робот

Lombok @Builder не инициализирует коллекции

Я использую Lombok @Data и @Builder аннотации, подобные этому:

@Data
@Builder(toBuilder = true)
class Movie {

    // Some other fields here.

    private final List<Actor> actors;

}

Когда я создаю новый Movie с помощью построителя без указания каких-либо участников, я ожидаю, что Ломбок инициализирует мой список до Collections.emptyList(). Но этого не происходит:

List<Actor> actors = Movie.builder().build().getActors();
System.out.println(actors); // Prints 'null'.

В документации для аннотации @Builder она указана в строках 55 и 56 в примере кода для Vanilla Java (https://projectlombok.org/features/Builder.html), я должен посмотреть пример кода для @Singular (https://projectlombok.org/features/Singular-snippet.html). На строке 112 в примере Java Vanilla здесь кажется, что список должен быть инициализирован в пустой список.

Я проверил, и это действительно произойдет, если я аннотирую список с помощью @Singular:

@Data
@Builder(toBuilder = true)
class Movie {

    // Some other fields here.

    @Singular
    private final List<Actor> actors;

}

List<Actor> actors = Movie.builder().build().getActors();
System.out.println(actors); // Prints '[]'.

Это ошибка в Ломбоке, или есть что-то, что я делаю неправильно? Согласно документации, похоже, что список должен быть инициализирован пустым списком в обоих случаях (поскольку документ @Builder относится к документу @Singular).

4b9b3361

Ответ 1

Только когда вы используете @Singular, вы получаете пустой список. На странице документации Builder говорится:

& hellip; с аннотацией @Singular, lombok будет рассматривать этот конструктор node как коллекцию.

Без @Singular ломбок рассматривает его как любой другой объект. Таким образом, вместо пустой коллекции будет null.

Раскрытие информации: Я разработчик Lombok