Booleanos, operadores condicionales y autoboxing
¿Por qué esto arrojaNullPointerException
public static void main(String[] args) throws Exception {
Boolean b = true ? returnsNull() : false; // NPE on this line.
System.out.println(b);
}
public static Boolean returnsNull() {
return null;
}
mientras esto no
public static void main(String[] args) throws Exception {
Boolean b = true ? null : false;
System.out.println(b); // null
}
?
La solución es, por cierto, reemplazarfalse
porBoolean.FALSE
para evitarnull
ser sin caja aboolean
--que no es posible Pero esa no es la pregunta. La pregunta espor qué? ¿Hay alguna referencia en JLS que confirme este comportamiento, especialmente del segundo caso?