Autoboxing es la conversión automática de tipos primitivos (int, double, etc.) a sus correspondientes objetos envolventes (Integer, Double, etc.). Unboxing es la conversión inversa de un objeto envolvente de vuelta a un primitivo.
Funciona automáticamente en asignaciones, argumentos de métodos y colecciones:
List<Integer> numbers = new ArrayList<>(); numbers.add(5); // Ejemplo de autoboxing: 5 (int) -> Integer(5) int value = numbers.get(0); // Unboxing: Integer(5) -> 5
Riesgos:
¿Puede el siguiente código lanzar una excepción? ¿Por qué?
Integer x = null; int y = x;
Respuesta: El código lanza NullPointerException porque al intentar ejecutar int y = x; ocurre un unboxing de null a primitivo, y null no se puede convertir a int.
Historia
int.Historia
Integer como clave para un caché, sin tener en cuenta que los valores -128...127 se almacenan en caché, mientras que los demás no. Debido a esto, == de repente comenzó a dar resultados incorrectos, lo que provocó la eliminación incorrecta de datos del caché.Historia
En la API REST llegaron valores anulables. Un simple unboxing de un Integer entrante a veces provocaba fallos debido a un inesperado null en lugar de un número del cliente.