Mengapa ini melempar 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;
}
sementara ini tidak
public static void main(String[] args) throws Exception {
Boolean b = true ? null : false;
System.out.println(b); // null
}
?
Solusinya adalah dengan cara mengganti false
dengan Boolean.FALSE
untuk menghindari null
unboxed ke boolean
- yang tidak mungkin. Tapi itu bukan pertanyaannya. Pertanyaannya adalah mengapa ? Apakah ada referensi di JLS yang mengkonfirmasi perilaku ini, terutama dari kasus ke-2?