【发布时间】:2013-01-31 22:48:53
【问题描述】:
在JDK或者Google Guava中是否有这样的方法
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
}
不会崩溃。
我环顾四周,但找不到任何这样的方法,我想知道我是否错过了它,或者是否有原因导致这种方便的方法不方便因此不包括在内?
【问题讨论】:
-
方法首先不应返回
null集合。 -
我相信使用
Collections.emptyList()可以轻松编写这样的方法。 -
@SLaks 原则上同意但你不能控制其他人的代码:)
-
使用 AspectJ 和 after-advice 来保护自己免受返回
null而不是空的Collection的代码影响的一种有点令人困惑的方法。创建一个切入点来匹配返回Collection的方法的执行,如果原始返回值为null,则返回一个空的Collection。对Map、List等重复此操作。但是,您的同事可能不喜欢这一点。
标签: java collections guava