У мене є такий код:
Boolean bool = null;
try
{
if (bool)
{
//DoSomething
}
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
Чому моя перевірка на булеву змінну "bool" призводить до виключення? Чи не слід просто стрибати прямо повз твердження if, коли воно «бачить», що це неправда? Коли я видаляю оператор if або перевіряю, чи він НЕ нульовий, виняток відходить.
if (bool == Boolean.TRUE)оцінює false, не створюючи винятку. Не впевнений, чи це було навмисно у випадку, який я щойно знайшов.
boolте, що nullАБО Booleanбуло побудовано явно (а не як посилання на Boolean.TRUE). Тому не рекомендується; на відміну від того, if (Boolean.TRUE.equals(bool))який би працював як очікувалося, включаючи безпечне поводження з nullвартістю.