Perché questo lancio 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;
}
mentre questo non lo fa
public static void main(String[] args) throws Exception {
Boolean b = true ? null : false;
System.out.println(b); // null
}
?
La soluzione è il modo per sostituire false
per Boolean.FALSE
evitare null
di essere unboxed a boolean
--che non è possibile. Ma questa non è la domanda. La domanda è: perché ? Ci sono riferimenti in JLS che confermano questo comportamento, in particolare del secondo caso?