====== Clases envoltorio (Wrapper) ======
El paquete ''java.lang'' contiene clases básicas. Este paquete se importa por defecto en todo
programa en Java como ya hemos visto en otras ocasiones, por lo que no es necesario hacer un ''import'' de ninguna de sus clases.
Dentro de este paquete tenemos 8 clases, una por cada tipo primitivo, llamadas **clases envoltorio o wrapper**.
Su finalidad es ofrecer la posibilidad de tratar a los tipos primitivos como si fueran objetos, ya que habrá ciertos momentos en los que no podamos usar primitivos.
Estas clases son:
* **Integer**: envuelve un ''int''
* **Long**: envuelve un ''long''
* **Float**: envuelve un ''float''
* **Double**: envuelve un ''double''
* **Character**: envuelve un ''char''
* **Boolean**: envuelve un ''boolean''
* **Byte**: envuelve un ''byte''
* **Short**: envuelve un ''short''
Como vemos todos estos nuevos tipos de datos comienzan por letra **mayúscula** ya que son clases.
===== Instanciar objetos envoltorio =====
De la misma forma que la clase ''String'', las clases envoltorio tienen algunos privilegios. Uno de ellos es la propiedad ''autoboxing'' que permite **crear un objeto** mediante una asignación directa:
//Instanciación rápida
Integer numero = 5;
//Instanciación lenta
Integer numero2 = new Integer(5);
===== Métodos comunes=====
Existen algunos métodos que llevamos usando bastante tiempo aunque igual no nos habíamos dado cuenta:
int numero;
numero = Integer.parseInt("-124");
El método ''estático'' parseInt() pertenece a la clase ''Integer'', y como es estático, no necesitamos crear un objeto de tipo Integer para usarlo.
Todas las clases envoltorio tiene el método estático ''parseXXX()''.
Métodos de instancia
* intValue(), booleanValue(), floatValue(), etc
Permiten obtener el valor primitivo del objeto envoltorio. Se debe llamar desde un objeto del tipo concreto:
Integer numero = new Integer(5);
int valor = numero.intValue();
===== AutoBoxing =====
Permite encapsular directamente con una asignación un tipo primitivo dentro de un objeto envoltorio:
int numeroPrimitivo = 5;
Integer numeroObjeto = numeroPrimitivo;
//ó también
numeroObjeto = 345;
Java crea la instancia de Integer, aunque no lo veamos.
===== AutoUnboxing =====
Es la propiedad contraria a la anterior: permite obtener directamente el valor primitivo de un objeto envoltorio.
Integer objeto = new Integer(6);
int primitivo = objeto;
De esta forma no es necesario llamar al método ''intValue()''.
===== Inmutabilidad =====
De la misma forma que la clase String, las clases envoltorios tienen valores inmutables. Esto quiere decir que cada vez que cambiamos el valor de una variable de tipo wrapper, estamos construyendo un nuevo objeto.
----
(c) {{date> %Y}} Fernando Valdeón