【问题标题】:NonNull List Items with Lombok带有 Lombok 的非空列表项
【发布时间】:2017-03-16 05:44:00
【问题描述】:

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

@Builder
class Classroom {

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

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

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

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

【问题讨论】:

  • 我认为@NonNull 注释意味着students 列表本身不能为空。并不是说单个元素不能为空。
  • 我知道注释意味着列表不能是null;我希望它也能扩展到单个元素本身。
  • 同意,如果能够单独从Collection/Map/etc 本身指定元素,那将是很好的。

标签: java lombok


【解决方案1】:

根据Lombock documentation:

您可以在方法或构造函数的参数上使用@NonNull 让lombok 为您生成一个空检查语句。

因此,您必须将@NonNull 注释放在student 方法的参数上(在builder 类中),而不是放在私有字段students(在Classroom 类中)。

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

【讨论】:

    猜你喜欢
    • 2022-10-25
    • 2021-07-12
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 2018-03-15
    • 2011-10-31
    • 2020-01-04
    相关资源
    最近更新 更多