Mam następujący kod:
Boolean bool = null;
try
{
if (bool)
{
//DoSomething
}
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
Dlaczego moje sprawdzenie zmiennej boolowskiej „bool” powoduje wyjątek? Czy nie powinien po prostu przeskoczyć bezpośrednio obok wyrażenia if, kiedy „widzi”, że nie jest prawdą? Kiedy usuwam instrukcję if lub sprawdzam, czy NIE jest pusta, wyjątek znika.
if (bool == Boolean.TRUE)ocenia fałsz bez generowania wyjątku. Nie jestem pewien, czy było to zamierzone w przypadku, który właśnie znalazłem.
bool, nullgdyby Booleanbyło OR, gdyby zostało skonstruowane jawnie (a nie jako odniesienie do Boolean.TRUE). Więc nie zalecane; w przeciwieństwie do tego, if (Boolean.TRUE.equals(bool))który działałby zgodnie z oczekiwaniami, w tym bezpieczną obsługę nullwartości.