当不确定集合引用是否为 null 时,我必须在迭代之前检查 null 是很常见的。样本:
Collection<Object> collection = ...
...
if(collection != null)//troublesome
for(Object o : collection)
当然,我知道空集合比 null 好得多,但在某些情况下,客户端代码无法控制来自其他模块的可为空集合(例如,来自 3rd 方代码的返回值)。所以我写了一个实用方法:
public static <T> Iterable<T> nullableIterable(Iterable<T> it){
return it != null ? it : Collections.<T>emptySet();
}
在客户端代码中,不再需要检查 null:
for(Object o : nullableIterable(collection))
...
你觉得nullableIterable()
合理吗?有什么建议吗?有什么顾虑吗?谢谢!