Null集合已转换为空



默认情况下,如果未提供任何集合,immutables.io将创建空集合。

@Value.Immutable
public abstract class MyTestPojo {
public abstract List<String> myList();
}

以下操作将创建具有空集合的对象:

MyTestPojo pojo = ImmutableMyTestPojo.builder()
.build();

但是,如果该值显式设置为null,免疫表将抛出NPE。

MyTestPojo pojo2 = ImmutableMyTestPojo.builder()
.myList(null)
.build();

这可以通过允许@Nullable为null来避免。这将导致集合为null。我希望这种情况能够优雅地处理null并将其转换为空集合。

我建议您研究规范化特性,它可以在返回最终实例之前执行一些修改:

@Value.Immutable
public abstract class MyTestPojo {
@Nullable
public abstract List<String> myList();
@Value.Check
protected MyTestPojo check() {
if ( myList() == null ) {
return ImmutableMyTestPojo.copyOf(this).withMyList();
}
return this;
}
}

请注意,myList属性是用@Nullable进行注释的。该检查将在实例化期间用空列表覆盖null值。

最新更新