Ошибка Java null до int Условный оператор - программирование
Подтвердить что ты не робот

Ошибка Java null до int Условный оператор

Возможный дубликат:
Tricky trernary operator в Java - autoboxing

Мы знаем, что int roomCode = null; не разрешен компилятором.

Тогда почему код 1 не дает ошибку компилятора, когда делает код 2.

Код 1:

int roomCode = (childCount == 0) ? 100 : null;

Код 2:

int roomCode = 0;
if(childCount == 0) roomCode = 100;
else roomCode = null; // Type mismatch: cannot convert from null to int
4b9b3361

Ответ 1

Я немного отлаживал и узнал, что при оценке

(childCount == 0) ? 100 : null;

программа вызывает метод valueOf Integer для оценки null. Он возвращает целое число и как целое может быть null (а не int), он компилируется. Как будто вы делали что-то вроде:

int roomCode = new Integer(null);

Итак, это связано с автобоксированием.