Я всегда думал, что примитивные типы в Java не могут быть null
, так как это ошибка времени компиляции, если я попытаюсь сделать что-то вроде этого:
int test = null;
Однако в тройной операции, кажется, разрешено:
int test = something != 0 ? 5 : null;
Разве тернарная операция не является сокращением (в данном случае):
int test;
if (something != 0){
test = 5;
} else {
test = null
}
чего, конечно, нельзя допускать. если это условие не выполняется, автоматически выдается NullPointerException
из-за автоупаковки. Так почему же java-компилятор не выдает такой бред?