Tại sao ném này 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;
}
trong khi điều này không
public static void main(String[] args) throws Exception {
Boolean b = true ? null : false;
System.out.println(b); // null
}
?
Giải pháp là bằng cách thay thế false
bằng cách Boolean.FALSE
tránh null
bị bỏ hộp đến boolean
- điều không thể. Nhưng đó không phải là câu hỏi. Câu hỏi là tại sao ? Có bất kỳ tài liệu tham khảo nào trong JLS xác nhận hành vi này, đặc biệt là trường hợp thứ 2 không?