Ошибка 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
Ответы
Ответ 1
Я немного отлаживал и узнал, что при оценке
(childCount == 0) ? 100 : null;
программа вызывает метод valueOf
Integer для оценки null
. Он возвращает целое число и как целое может быть null (а не int), он компилируется. Как будто вы делали что-то вроде:
int roomCode = new Integer(null);
Итак, это связано с автобоксированием.