¿Por qué esto arroja NullPointerException
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, reemplazar false
por Boolean.FALSE
para evitar null
ser desempaquetado en, boolean
lo que no es posible. Pero esa no es la pregunta. La pregunta es ¿por qué ? ¿Hay alguna referencia en JLS que confirme este comportamiento, especialmente del segundo caso?