java for list null_Null检查增强的for循环

问题

在Java中for循环中防止null的最佳方法是什么?

这看起来很难看:

if (someList != null) {

for (Object object : someList) {

// do whatever

}

}

要么

if (someList == null) {

return; // Or throw ex

}

for (Object object : someList) {

// do whatever

}

可能没有任何其他方式。他们应该把它放在for构造本身,如果它是null,那么不要运行循环?

#1 热门回答(202 赞)

你应该更好地验证从哪里获得该列表。

你只需要一个空列表,因为空列表不会失败。

如果你从其他地方得到这个列表并且不知道它是否正常你可以创建一个实用工具方法并像这样使用它:

for( Object o : safe( list ) ) {

// do whatever

}

当然safe将是:

public static List safe( List other ) {

return other == null ? Collections.EMPTY_LIST : other;

}

#2 热门回答(88 赞)

如果传入null,你可能会编写一个返回空序列的辅助方法:

public static Iterable emptyIfNull(Iterable iterable) {

return iterable == null ? Collections.emptyList() : iterable;

}

然后使用:

for (Object object : emptyIfNull(someList)) {

}

我不认为我实际上是这样做的 - 我通常会使用你的第二种形式。特别是,"或者抛出ex"很重要 - 如果它真的不应该为null,那么你肯定应该抛出异常。你知道有些东西出了问题,但是你不知道损坏的程度。早点中止。

#3 热门回答(18 赞)

用法:

for(Object obj : ListUtils.emptyIfNull(list1)){

// Do your stuff

}

你可以使用CollectionUtils.emptyIfNull对其他Collection类执行相同的空值安全检查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值