Lombok: @RequiredArgsConstructor создает конструктор из финала, но не из @NotNull - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь создать базовый c класс Recipe с @RequiredArgsConstructor, но Lombok, похоже, не создает требуемый конструктор args правильно. Хотя он будет успешно создавать другие конструкторы, такие как @AllArgsConstructor, требуемый конструктор args пуст, даже когда у меня есть значения, помеченные @NotEmpty / @NotNull. Я дважды проверил, что импортировал RequiredArgsConstructor.

Вот урезанная версия моего класса:

@RequiredArgsConstructor
public class Recipe
{
    @NotEmpty
    String name;

    @NotNull
    ArrayList<Ingredient> ingredients;

    @NotNull
    ArrayList<String> steps;

    // Time in mins
    int time;

    String creator;
}

Конструктор, созданный Lombok, который я зарегистрировал Мой встроенный файл класса пуст.

Обратите внимание, что когда я сделаю поля @NotNull окончательными в моем классе, Lombok создаст правильный требуемый конструктор args:

public Recipe(String name, ArrayList<Ingredient> ingredients, ArrayList<String> steps) {
        this.name = name;
        this.ingredients = ingredients;
        this.steps = steps;
    }

Так что это выглядит как будто он игнорирует аннотации @NotNull. Буду признателен за любые указания о том, что я могу делать здесь не так. Спасибо!

1 Ответ

0 голосов
/ 15 апреля 2020

Я неправильно интерпретировал документацию Project Lombok, в которой говорится, что «Все неинициализированные конечные поля получают параметр, а также любые поля, помеченные как @NonNull, которые не инициализированы там, где они объявлены».

Я взял @NonNull для обозначения любого поля, помеченного @NotNull или эквивалентным, от javax.validation.constraints.NotNull/NotEmpty, хотя на самом деле оно буквально означало @NonNull от lombok.NonNull.

...