有没有JDK或番石榴方法将空值转换为空列表?

2022-09-01 16:27:13

在JDK或谷歌番石榴中是否有这样的方法

public static <T> Collection<T> safe(Collection<T> collection) {
    if (collection == null) {
        return new ArrayList<>(0);
    } else {
        return collection;
    }
}

这使得在增强的循环中很容易不崩溃,例如,如果某些内容返回空列表

for (String string : CollectionUtils.safe(foo.canReturnANullListOfStrings())) {
    // do something
}

不会崩溃。

我环顾四周,但找不到任何这样的方法,我想知道我是否错过了它,或者是否有原因为什么这种方便的方法不方便,因此不包括在内?


答案 1
Objects.firstNonNull(list, ImmutableList.<Foo>of());

不需要专用方法,这确实是我们建议您在从顽皮的API获得潜在空集合时立即使用的解决方案,理想情况下不应该这样做。


答案 2

Apache Collections 4 有一个通用方法ListUtils.emptyIfNull(List<T> list)

这是文档:https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/ListUtils.html