У меня есть следующий код:
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стоимость.