java int autoboxing

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