2012-03-23 21 views
8

任何人能解释我为什么这个抛出一个findbug警告:为什么FindBugs忽略我的空检查?

if (m != null && m.getModifiedDate() != null) 
    content.put("ModifiedDate", m.getModifiedDate().getTime()); 

,这是工作:

if(m != null){ 
    Date date = m.getModifiedDate(); 
    if (date != null) 
     content.put("ModifiedDate", date .getTime()); 
} 

警告:由于返回调用方法的价值可能空指针引用。

有没有可能告诉FindBugs示例编号1不应该是警告?

+0

哪个警告? – UmNyobe 2012-03-23 08:49:09

+0

什么是警告? – montardon 2012-03-23 08:50:28

+0

对不起,忘了粘贴它..编辑 – soulcinder 2012-03-23 08:50:53

回答

15

可能是因为m.getModifiedDate()可能会在第一次调用时返回非空值,而第二次调用时则返回空值?

+0

哦,好的!那么是否有一种方法可以告诉Findbugs如果检查是否足够了,那么它就会变得如此糟糕? – soulcinder 2012-03-23 08:53:28

+0

你能说出在第一种情况下返回null或非null是如何返回一个警告的,而不是在第二种情况下。 – 2012-03-23 08:53:29

+1

@ChandraSekhar:在第二种情况下,我们只调用一次'getModifiedDate()' - 在无效性检查后'date'的值不会变为空... – 2012-03-23 08:54:15