是否有JDK或Guava方法将null转换为空列表?

在JDK或Google Guava中是否有像这样的方法

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

例如,如果某些东西返回空列表,则很容易在增强的循环上崩溃

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

不会崩溃。

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

 Objects.firstNonNull(list, ImmutableList.of()); 

没有必要使用专门的方法,这确实是我们建议您在从淘气的API获得可能为空的集合时立即使用的解决方案,理想情况下不应该首先执行此操作。

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

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

在Java 8中,可以使用:

 Optional.ofNullable(foo.canReturnANullListOfStrings()).orElse(Collections.emptyList()); 

所以我不知道这种function。 然而,如上所示,写一个是微不足道的。 可能没有包含它的原因背后的原因是因为null具有特定含义,并且当传递一个空集合时可能不适合返回空集合。 一般来说(根据我的经验)当一个空值进入系统时,某些东西在链条上方失败,或者无效值被无法正确消毒。

Java 9更新: java.util.Objects.requireNonNullElse(collection, List.of())

仍然是必需的。