使用 Lombok 的非空列表项

NonNull List Items with Lombok

我目前正在构建一个 Java 应用程序并使用 Lombok 注释来减少样板文件。但是,当同时使用 @Singular@NonNull 注释时,我 运行 遇到了问题。例如,让我们看下面的例子 class:

@Builder
class Classroom {

    @Singular @NonNull
    private List<String> students;
}

我希望@NonNull 注释能够防止单独添加 null 个元素 ,如下所示:

Classroom.builder()
    .student("Sally")
    .student("Joe")
    .student(null)
    .build();

然而,即使有注释,null 元素仍然会在构建 Classroom 对象时添加到列表中。有没有一种简单的方法,使用 Lombok 注释,将单个元素标记为 NonNull,或者我是否需要删除注释并自己实现这种类型的保护?

根据 Lombock documentation :

You can use @NonNull on the parameter of a method or constructor to have lombok generate a null-check statement for you.

所以你必须将 @NonNull 注释放在 student 方法的参数上(在构建器 class 中)而不是私有字段 students (在课堂上 class).

public student(@NonNull String name){
    students.add(name);
}