Tipos Wrapper en Java
Crea un ArrayList<Integer> llamado nums, llama nums.add(9); luego nums.add(4);, e imprime nums.get(0). Compila Crate.java y ejecuta java Crate. La pantalla debe mostrar una línea: 9. Entre los corchetes angulares va Integer, no int. Guardar números enteros en una lista mediante un tipo Wrapper — para que la colección pueda contener objetos — es lo que enseña esta página.
Por qué la lista necesita Integer
En la página de iterating la lista guardaba palabras String. Un ArrayList almacena objetos. El tipo primitivo int no es un objeto. El tipo Wrapper Integer es la forma objeto de un número entero. Dentro de los corchetes angulares escribes Integer. Cuando haces add(9), Java puede empaquetar el primitivo 9 en un Integer por ti en esta página. Ese boxing silencioso basta para el archivo de enseñanza.
Abre Crate.java. Mantén el nombre de la clase pública Crate para que coincida con el nombre del archivo. Borra restos de for (String t : tags), adds de oak y pine, demos de Lane y cualquier resto de HashSet o map. Borra también cualquier Scanner o nextLine. El programa no debe esperar a que escribas.
Cerca de arriba, encima de public class Crate, escribe:
import java.util.ArrayList;
Dentro de main, crea la lista:
ArrayList<Integer> nums = new ArrayList<Integer>();
No escribas ArrayList<int> — javac rechaza esa forma. Mantén Integer en ambos lados de la línea de creación en esta página. Luego añade dos números enteros sin comillas:
nums.add(9);
nums.add(4);
Luego escribe:
System.out.println(nums.get(0));
La ranura cero guarda 9. Guarda antes de compilar.
import java.util.ArrayList;
public class Crate {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(9);
nums.add(4);
System.out.println(nums.get(0));
}
}
Desde la carpeta que contiene Crate.java, ejecuta javac Crate.java. Cuando paréntesis, llaves, corchetes angulares y punto y coma coinciden, javac no escribe ninguna línea propia. Luego ejecuta java Crate — no java Crate.java ni java Integer. Quita la terminación .java del comando de ejecución.
El programa debe imprimir una línea y parar: 9. No debe pedirte que escribas. Si la terminal espera entrada de teclado, aún queda una llamada nextLine de un ejercicio anterior en un archivo. Borra esa llamada y mantén la creación de ArrayList<Integer>, las dos líneas add y System.out.println(nums.get(0));.
Recorre la ejecución una vez. Java empieza en Crate.main. La lista crece con dos enteros empaquetados. La llamada get(0) devuelve el primer Integer. La línea de impresión escribe 9. La pantalla muestra 9. No debe imprimirse nada más. Si ves oak o pine, aún corre una demo de iterating de Lane — pasa a java Crate. Si ves 4, imprimiste get(1) por error; mantén get(0) para el archivo de enseñanza. Si ves [9, 4], imprimiste el objeto lista entero en lugar de la ranura cero — mantén println(nums.get(0)) para la ruta del quiz.
Si javac rechaza ArrayList<int>, cambia los corchetes a Integer. Ese error es el punto central de la regla de tipo de esta lección; corrige los corchetes y compila otra vez. Si escribes nums.add("9"); con comillas, estás añadiendo un String, y javac lo rechaza para un ArrayList<Integer>. Mantén dígitos sin comillas en esta página. Si falta el import, javac no encuentra ArrayList — pon import java.util.ArrayList; encima de la clase. La ortografía Integer con I mayúscula importa; integer en los corchetes no coincide con el tipo Wrapper que Java espera aquí.
Unbox a un int sencillo
Una segunda demo lee el primer valor en una variable primitiva int y luego imprime esa variable. Java desempaqueta el Integer por ti en esta asignación.
import java.util.ArrayList;
public class Crate {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(9);
nums.add(4);
int n = nums.get(0);
System.out.println(n);
}
}
Compila y ejecuta de la misma forma. La pantalla sigue mostrando 9. La línea int n = nums.get(0); saca el valor Wrapper como un int sencillo. No necesitas llamar intValue() en este camino de principiante. Mantén el primer archivo de enseñanza como la forma directa println(nums.get(0)). Usa el archivo unbox para ver que una variable primitiva puede guardar lo que la lista almacenó como Integer. Mantén el nombre n exactamente como se muestra para que la línea de impresión quede corta. No mezcles un for-each sobre etiquetas String en este segundo archivo — quédate con la lista de números y la única asignación int.
Lado a lado
Una tabla corta mantiene clara la regla de tipo.
📊 int vs Integer for lists
| Piece | On this page |
|---|---|
| list type | ArrayList<Integer> |
| illegal | ArrayList<int> — not allowed |
| add | nums.add(9); — boxes to Integer |
| read | nums.get(0) prints 9; may unbox to int n |
La tabla es solo un recordatorio. Las piezas tipadas que conservas son el import, ArrayList<Integer>, los dos adds y get(0). |
Comparado con listas String y con primitivos solos
En la página de iterating, ArrayList<String> guardaba palabras. Eso sigue funcionando. Esta página cambia el tipo de elemento a Integer para que los enteros puedan sentarse en una lista. Un for-each sobrante de Lane que imprime oak y pine es otra lección. Para esta página mantén Crate e imprime 9 desde get(0).
Un int x = 9; solo sigue funcionando sin ninguna lista. Los wrappers importan cuando la API de colecciones pide un tipo objeto en los corchetes angulares. Otros wrappers siguen la misma idea más adelante — Double junto a double, Boolean junto a boolean — pero esta página mantiene Integer e int para que la pantalla quede un número claro. Hoy no necesitas memorizar cada nombre de Wrapper; aprende el patrón una vez con Integer junto a int y la forma ilegal ArrayList<int>.
Cuando viejos archivos Lane.java aún están cerca, déjalos o bórralos solo si confunden qué clase ejecutas. Ejecuta java Crate después de compilar la lista Wrapper de esta lección. El camino de Collections termina aquí con ese 9 claro en pantalla antes de que el curso gire a errores y archivos.
Lo que queda para exceptions
Esta página cierra la necesidad de Wrapper del módulo Collections para enteros en una lista. El siguiente módulo abre errores con exceptions. Quédate aquí en esta página con ArrayList<Integer> y get(0). No inventes try o catch como requisito en esta página.
Antes de exceptions
Puedes importar java.util.ArrayList, crear ArrayList<Integer> nums, añadir 9 y 4, e imprimir nums.get(0) para ver 9. También puedes hacer unbox a int n. Compila Crate.java y ejecuta java Crate. El tipo Wrapper permitió que la lista guardara enteros. La página siguiente es exceptions, donde un programa señala y maneja problemas.
Mantén Integer en los corchetes angulares. Mantén adds de números sin comillas. Mantén get(0) para la pantalla de enseñanza 9. Esos tres hábitos son el punto de control antes de seguir. Cuando la pantalla muestra 9 desde la lista Integer tras una compilación limpia de Crate.java, los wrappers hicieron su trabajo en esta lección y estás listo para el siguiente tema.
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 Instrucciones
- Lee cada pregunta cuidadosamente
- Selecciona la mejor respuesta para cada pregunta
- Puedes repetir el quiz tantas veces como quieras
- Tu progreso se mostrará en la parte superior