2012-03-23 18 views
8

Czy ktoś może mi wyjaśnić dlaczego ta generuje ostrzeżenie findbug:Dlaczego FindBugs ignoruje mój czek na wartość zerową?

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

i to działa:

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

Ostrzeżenie: Możliwe pustego wskaźnika dereference ze względu na wartość zwaną metodą powrotu.

Czy istnieje possibilty powiedzieć FindBugs że Przykład numer 1 nie powinien być ostrzeżeniem?

+0

które ostrzeżenie ??? – UmNyobe

+0

Co to jest ostrzeżenie? – montardon

+0

przepraszam zapomniałem go wkleić .. edytowany – soulcinder

Odpowiedz

15

Prawdopodobnie dlatego m.getModifiedDate() mógł wrócić niepustą wartość na pierwsze wezwanie, ale wartość null na sekundę?

+0

oh Ok! więc czy istnieje metoda, aby powiedzieć Findbugom, że wystarczy, jeśli sprawdzisz, czy to wystarczy? – soulcinder

+0

Czy wiesz, w jaki sposób zwracana wartość null lub inna niż null powoduje ostrzeżenie w pierwszym przypadku, a nie w drugim przypadku. –

+1

@ChandraSekhar: W drugim przypadku wywołujemy tylko 'getModifiedDate()' raz - wartość 'date' nie zmieni się na null po sprawdzeniu nieważności ... –

Powiązane problemy