2012-03-23 9 views
8

¿Alguien puede explicar por qué esto arroja una advertencia findbug:¿Por qué FindBugs está ignorando mi cheque por nulo?

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

y esto está funcionando:

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

Advertencia: Posible referencia a un puntero nulo debido a devolver el valor del llamado método.

¿Existe la posibilidad de decirle a FindBugs que el Ejemplo número 1 no debería ser una advertencia?

+0

que advertencia ??? – UmNyobe

+0

¿Cuál es la advertencia? – montardon

+0

lo olvidé de pegarlo ... editado – soulcinder

Respuesta

15

Posiblemente porque m.getModifiedDate() podría devolver un valor no nulo en la primera llamada, pero un valor nulo en la segunda?

+0

oh Ok! Entonces, ¿hay un método para decirle a Findbugs que el control si la verificación es suficiente? – soulcinder

+0

¿Puede decirnos cómo la devolución nula o no nula causa una advertencia en el primer caso y no en el segundo caso? –

+1

@ChandraSekhar: en el segundo caso solo llamamos a 'getModifiedDate()' una vez; el valor de 'date' no va a cambiar para ser nulo después de la comprobación de nulidad ... –

Cuestiones relacionadas