Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在循环迭代之前检查NULL?_Java - Fatal编程技术网

Java 在循环迭代之前检查NULL?

Java 在循环迭代之前检查NULL?,java,Java,如果我有 List<Attachment> attachments = getAttachments(); for (Attachment a: attachments) { //... } List attachments=getAttachments(); 适用于(附件a:附件) { //... } 我需要检查附件吗!=执行收集循环之前是否为null?这取决于getAttachments()是否可以返回null。如果返回null,代码将抛出NullPointerExce

如果我有

List<Attachment> attachments = getAttachments();

for (Attachment a: attachments)
{
  //...
}
List attachments=getAttachments();
适用于(附件a:附件)
{
//...
}

我需要检查附件吗!=执行收集循环之前是否为null?

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

是的,如果您不确定
getAttachments()
是否返回Collections.EMPTY\u LIST而不是null,则应该检查。否则您将获得NPE。

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

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

List<Attachment> attachments = getAttachments();
if( attachments != null ){
    for (Attachment a: attachments)
    {
        //...
    }
}
List attachments=getAttachments();
如果(附件!=null){
适用于(附件a:附件)
{
//...
}
}

您尝试过如果getAttachments()返回null会发生什么吗?尝试一下看看(Atachment a:null){}
会发生什么
getAttachments()
是否返回null?或者它只是返回一个空列表?很难快速回答吗?这就是本论坛的重点。该方法可以返回NULL。@geneb。像这样的问题不应该出现在论坛上,你可以通过一个简单的测试来回答自己,这只会把事情弄得一团糟。。。