dlaczego mogę ustawić prymitywne typy na null w operacjach trójskładnikowych
Zawsze myślałem, że prymitywne typy w Javie nie mogą byćnull
, ponieważ jest to błąd czasu kompilacji, jeśli próbuję zrobić coś takiego:
int test = null;
Jednak w operacji trójskładnikowej wydaje się dozwolone:
int test = something != 0 ? 5 : null;
Czy operacja trójskładnikowa nie jest zbyt krótka (w tym przypadku):
int test;
if (something != 0){
test = 5;
} else {
test = null
}
które oczywiście nie powinny być dozwolone. jeśli ten warunek się nie powiedzie, automatycznie rzuci aNullPointerException
z powodu autoboxingu. Dlaczego więc kompilator java nie pobiera takich nonsensów?