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