0

我正在尝试使用 创建一个基本的 Recipe 类@RequiredArgsConstructor,但 Lombok 似乎没有正确创建所需的 args 构造函数。虽然它会成功创建其他构造函数,例如@AllArgsConstructor,但即使我有使用@NotEmpty/注释的值,所需的 args 构造函数也是空的@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注释。对于我在这里可能做错的事情,我将不胜感激。谢谢!

4

1 回答 1

0

我错误地解释了 Project Lombok 文档,该文档说“所有未初始化的最终字段都有一个参数,以及任何标记为@NonNull未在声明它们的地方初始化的字段。”

@NonNull指的是任何标有@NotNull或等效的字段 from javax.validation.constraints.NotNull/NotEmpty,而实际上它的字面意思是@NonNullfrom lombok.NonNull

于 2020-04-15T04:20:42.400 回答