Java null to int Operador condicional problema
autoboxing (1)
Hice un poco de depuración y descubrí que al evaluar
(childCount == 0) ? 100 : null;
el programa llama al método valueOf
de Integer para evaluar el null
. Devuelve un entero y, como un entero puede ser nulo (y no un int), se compila. Como si estuvieras haciendo algo como:
int roomCode = new Integer(null);
Así que está relacionado con el autoboxing.
Posible duplicado:
Operador ternario complicado en Java - autoboxing
Sabemos que int roomCode = null;
No está permitido por el compilador.
Entonces, ¿por qué el Código 1 no da un error de compilación, cuando el Código 2 lo hace?
Código 1:
int roomCode = (childCount == 0) ? 100 : null;
Código 2:
int roomCode = 0;
if(childCount == 0) roomCode = 100;
else roomCode = null; // Type mismatch: cannot convert from null to int