ฉันมีรหัสต่อไปนี้:
Boolean bool = null;
try
{
if (bool)
{
//DoSomething
}
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
ทำไมการตรวจของฉันถึงตัวแปรบูลีน "บูล" จึงทำให้เกิดข้อยกเว้น? มันควรจะกระโดดข้ามคำสั่ง if ทันทีหรือไม่เมื่อเห็น "เห็นว่ามันไม่จริงเหรอ? เมื่อฉันลบคำสั่ง if หรือตรวจสอบหากไม่เป็นโมฆะข้อยกเว้นจะหายไป
if (bool == Boolean.TRUE)ประเมินเท็จโดยไม่สร้างข้อยกเว้น ไม่แน่ใจว่านี่เป็นเจตนาในกรณีที่ฉันเพิ่งพบ
boolการเป็นnullหรือถ้าBooleanถูกสร้างขึ้นอย่างชัดเจน (และไม่อ้างอิงถึงBoolean.TRUE) ดังนั้นไม่แนะนำ เมื่อเทียบกับการif (Boolean.TRUE.equals(bool))ที่จะทำงานตามที่คาดไว้รวมถึงได้อย่างปลอดภัยการจัดการnullค่า