Respuestas:
Al ejecutar su código, el tiempo de ejecución de Java hace lo siguiente:
En otras palabras, nulo se puede convertir a Integer sin problemas, pero un objeto entero nulo no se puede convertir a un valor de tipo int.
EDITAR
Tuve una pregunta relacionada hace un tiempo en Stack Overflow, mira aquí .
Java convierte con éxito nulo en una referencia entera que no hace referencia a ningún objeto.
Eso está bien porque estar sin distancia es un estado válido para una referencia.
Es la invocación de un método de un objeto no existente que no se puede realizar.
Realizar la conversión (Integer)nulles lo mismo que declarar una variable Integer y luego no asignarle una instancia de objeto Integer nueva (o ya existente).
Para desempaquetar un Integeren un intie en int i = new Integer(15);, en irealidad es igual new Integer(15).intValue() i = (Integer) o; donde Object o = 15es lo mismo que o = Integer.valueOf(15);pero i = null; arroja un NullPointerExceptionporque ientonces es igual a null.intValue()cuál arroja a NullPointerException.
valueOf()métodos de fábrica en lugar de crear nuevas instancias para el boxeo.