在Java中防止for循环为空的最好方法是什么?
这看起来很丑陋:
if (someList != null) {
for (Object object : someList) {
// do whatever
}
}
Or
if (someList == null) {
return; // Or throw ex
}
for (Object object : someList) {
// do whatever
}
可能没有别的办法了。他们是否应该把它放在for构造本身中,如果它是null,那么就不运行循环?
使用ArrayUtils。数组的common -lang库中的nullToEmpty
for( Object o : ArrayUtils.nullToEmpty(list) ) {
// do whatever
}
这个功能存在于common -lang库中,大多数Java项目都包含这个库。
// ArrayUtils.nullToEmpty source code
public static Object[] nullToEmpty(final Object[] array) {
if (isEmpty(array)) {
return EMPTY_OBJECT_ARRAY;
}
return array;
}
// ArrayUtils.isEmpty source code
public static boolean isEmpty(final Object[] array) {
return array == null || array.length == 0;
}
这和@OscarRyz给出的答案是一样的,但为了DRY的咒语,我认为它值得注意。参见commons-lang项目页面。下面是nullToEmpty API文档和源代码
在项目中包含common -lang(如果还没有)的Maven条目。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
不幸的是,common -lang没有为List类型提供此功能。在这种情况下,您必须使用前面提到的helper方法。
public static <E> List<E> nullToEmpty(List<E> list)
{
if(list == null || list.isEmpty())
{
return Collections.emptyList();
}
return list;
}