2012-03-23 37 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