在循环迭代之前检查NULL?

时间:2015-07-31 14:16:58

标签: java

假设我有

List<Attachment> attachments = getAttachments();

for (Attachment a: attachments)
{
  //...
}

在进行收集循环之前,我是否需要检查attachments != null

3 个答案:

答案 0 :(得分:1)

对此的答案完全取决于您getAttachments()的实施情况。如果此调用可以返回null,则需要执行空检查,否则您的代码可能会抛出NullPointerException。如果它可以返回null,那么更改getAttachments()的行为可能会更好,因为通常认为collection返回null是不好的做法。尝试修改它以返回Collections.emptyList()

如果您不想修改其行为,则可以轻松添加空检查:

List<Attachment> attachments = getAttachments();
if( attachments != null ){
    for (Attachment a: attachments)
    {
        //...
    }
}

答案 1 :(得分:0)

这取决于getAttachments()是否可以返回null。如果它返回null,您的代码将抛出NullPointerException。因此,您需要检查null以防止这种情况发生。

答案 2 :(得分:0)

是的,如果您不确定getAttachments()没有返回Collections.EMPTY_LIST而不是null,那么您应该这样做。否则你会得到NPE。