Warum wirft das 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;
}
während dies nicht tut
public static void main(String[] args) throws Exception {
Boolean b = true ? null : false;
System.out.println(b); // null
}
?
Die Lösung besteht im Übrigen darin , sie zu ersetzen, false
um Boolean.FALSE
zu vermeiden null
, dass sie boolean
entpackt wird - was nicht möglich ist. Das ist aber nicht die Frage. Die Frage ist warum ? Gibt es in JLS Referenzen, die dieses Verhalten bestätigen, insbesondere im zweiten Fall?