ทำไมถึงโยน 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;
}
ในขณะที่สิ่งนี้ไม่
public static void main(String[] args) throws Exception {
Boolean b = true ? null : false;
System.out.println(b); // null
}
?
วิธีแก้ปัญหาคือการแทนที่false
โดยBoolean.FALSE
เพื่อหลีกเลี่ยงnull
การboolean
แกะกล่อง - ซึ่งเป็นไปไม่ได้ แต่นั่นไม่ใช่คำถาม คำถามคือทำไม ? มีการอ้างอิงใน JLS ที่ยืนยันพฤติกรรมนี้โดยเฉพาะในกรณีที่ 2 หรือไม่?