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。像这样的问题不应该出现在论坛上,你可以通过一个简单的测试来回答自己,这只会把事情弄得一团糟。。。