Autoboxing (inmutables) - 1

"¡Hola, amigo!"

"Hoy hablaré sobre el autoboxing . AutoBoxing significa poner automáticamente algo en una caja".

"Recordarás que Java tiene tipos que heredan la clase Object, así como tipos primitivos. Pero resulta que cosas convenientes como colecciones y genéricos solo funcionan con tipos que heredan Object".

"Entonces se tomó la decisión de hacer una contraparte no primitiva de cada tipo primitivo".

tipo primitivo Contraparte no primitiva
byte Byte
corto Corto
En t Entero
largo Largo
flotar Flotar
doble Doble
booleano booleano
carbonizarse Personaje
vacío Vacío

"Pero es muy inconveniente convertir entre estos tipos todo el tiempo:"

int x = 3;
Integer y = new Integer(x + 1);
int z = y.intValue();

"Especialmente cuando se trabaja directamente con colecciones:"

Ejemplo
int[] numbers = new int[10];
ArrayList list = new ArrayList();
for (int i = 0; i < numbers.length; i++)
{
 list.add( new Integer(i));
}

"Es por eso que los creadores de Java inventaron el 'autoboxing' de tipos primitivos y el 'unboxing' de sus contrapartes no primitivas".

"Así es como funciona:

lo que ves lo que realmente sucede
int x = 3;
Integer y = x + 1;
int x = 3;
Integer y = Integer.valueOf(x + 1);
int z = y;
int z = y.intValue();
Boolean b = Boolean.FALSE;
boolean a = b;
Boolean b = Boolean.FALSE;
boolean a = b.booleanValue();
Integer x = null;
int y = x;
Integer x = null; int y = x.intValue(); //Throws an exception

"Todo es simple. Puede asignar tipos int e Integer entre sí, y el compilador se encarga de todo lo demás".

"Eso es muy conveniente".

"Sí. Pero hay matices de los que hablaré más tarde".