Tôi có đoạn mã sau:
Boolean bool = null;
try
{
if (bool)
{
//DoSomething
}
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
Tại sao việc kiểm tra biến "Bool" của Boolean lại dẫn đến một ngoại lệ? Không phải nó nên nhảy ngay qua câu lệnh if khi nó "thấy" rằng nó không đúng? Khi tôi xóa câu lệnh if hoặc kiểm tra nếu nó KHÔNG null, ngoại lệ sẽ biến mất.
if (bool == Boolean.TRUE)đánh giá sai mà không tạo ra ngoại lệ. Không chắc chắn nếu điều này là cố ý trong trường hợp tôi vừa tìm thấy.
boolkhi là nullOR nếu Booleanđược xây dựng rõ ràng (và không phải là tham chiếu đến Boolean.TRUE). Vì vậy, không khuyến khích; trái ngược với if (Boolean.TRUE.equals(bool))đó sẽ làm việc như mong đợi, bao gồm nullgiá trị xử lý an toàn .