是否有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
这是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.
仍然是必需的。