我使用Lombok @Value注释。有可能以某种方式确保内部集合永远不会为空吗?
示例:
package com.testapp;
import lombok.Value;
import lombok.experimental.Wither;
import java.util.List;
@Value
@Wither
public final class ClassWithList {
private final List<String> list;
public void printList() {
list.forEach(System.out::println);
}
}
如果NullPointerException
为空,则会抛出list
。我当前的策略是永远不允许发生,内部集合可能为null,它在构造函数(setter,builder ...)中进行了清理。但是在这种情况下是由Lombok自动生成的构造函数。有没有办法,如何确保list
属性始终至少初始化为空集合,或者我是否必须开始编写繁琐的空检查?
答案 0 :(得分:3)
如果您传入的列表有可能为空
,则可以覆盖构造函数public ClassWithList(List<String> aList) {
this.list = aList == null ? new ArrayList<>() : aList;
}
来自Lombok项目(强调我的):Value
@Value是简写:final @ToString @EqualsAndHashCode @AllArgsConstructor @FieldDefaults(makeFinal = true,level = AccessLevel.PRIVATE)@Getter,除了明确包含任何的实现相关方法只是意味着部分不会被生成并且不会发出警告