2011-11-17 17 views
6

A veces obtengo NullPointerException de la línea a continuación.Ternary Operator y NullPointerException inesperada

System.out.println("Date::"+ row != null ? row.getLegMaturityDate() : "null"); 

Después de agregar los soportes, está bien.

System.out.println("Date::"+ (row != null ? row.getLegMaturityDate() : "null")); 

Por favor, aclare el comportamiento. Gracias por adelantado.

+0

Es por eso que intento limitar las declaraciones/expresiones de anidamiento tanto como sea posible. Si dividieras la declaración en dos, no tendrías ese problema. – helpermethod

Respuesta

13

"Date::" + row nunca es nulo, aunque row a veces es.

Es decir, "Date::"+ row != null es equivalente a , que siempre es cierto.

+0

Para agregar a esto, debe echar un vistazo a http://stackoverflow.com/questions/2137690/java-operator-precedence-guidelines –

+0

Gracias Christoffer. lo tengo. @ Mike, gracias por el enlace, informativo. – Vaandu