Cargando...

Generics en Java

Nombras el tipo de elemento dentro de corchetes angulares cuando construyes una lista. En Bin.java mantienes la clase pública Bin, importas java.util.ArrayList, creas ArrayList<String> names = new ArrayList<>();, añades "oak" e imprimes names.get(0). Compila con javac Bin.java y ejecuta java Bin. La pantalla debería mostrar oak. Una segunda demo guarda el valor Integer 3 del mismo modo. Deja Lambda opcional para la página siguiente. Esta lección son listas tipadas con Generics, no args de línea de comandos ni un mini proyecto con Scanner.

Lista String con argumento de tipo

Abre Bin.java. Mantén el nombre de clase pública Bin. Borra demos sobrantes de argumentos del programa Flag, avisos Scanner de Box, impresiones de compilación Build e historial de colecciones Shelf si entierran la historia de Generics. El programa no debe esperar tecleo ni leer args.
Añade el import arriba:
import java.util.ArrayList;
Dentro de Bin.main creas una lista cuyos elementos son String:
ArrayList<String> names = new ArrayList<>();
Los corchetes angulares tras ArrayList guardan el argumento de tipo String. El <> vacío en el lado new es el diamond — Java rellena el mismo tipo desde la izquierda. Luego guardas una palabra y la imprimes por índice:
names.add("oak");
System.out.println(names.get(0));
get(0) devuelve un String porque la lista se declaró con String. La pantalla muestra oak.

Bin ArrayList String prints oak

java
import java.util.ArrayList;

public class Bin {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        names.add("oak");
        System.out.println(names.get(0));
    }
}

Desde la carpeta que contiene Bin.java ejecuta javac Bin.java. Cuando llaves, corchetes y punto y coma coinciden, javac no escribe línea propia. Luego java Bin — no java Bin.java. Mantén una clase pública para que el nombre coincida con Bin.
Recorre la ejecución una vez. Java empieza en Bin.main. La lista está tipada para String. add guarda "oak". get(0) devuelve esa palabra. println escribe oak. Nada imprime args[0] de Flag. Nada espera en item:. Nada imprime [oak, pine] salvo que sigas un archivo Shelf viejo.
Di la regla de principiante mientras miras la pantalla: los corchetes angulares nombran el tipo de elemento; el diamond lo repite en new; get devuelve ese tipo. No inventes demos Lambda en esta página. Lambda espera la lección opcional siguiente. No dejes la lista raw como ArrayList names sin argumento de tipo en este archivo didáctico.
Si aún ves oak de java Flag oak, eran argumentos del programa. Aquí oak es un elemento de lista y el comando de ejecución es solo java Bin. Si javac no encuentra ArrayList, revisa la línea de import.

Lista Integer con el mismo hábito

Generics no es solo para palabras. Mantén la misma clase pública Bin. Construye una lista de valores Integer:
ArrayList<Integer> nums = new ArrayList<>();
nums.add(3);
System.out.println(nums.get(0));
Compila otra vez con javac Bin.java y ejecuta java Bin. La pantalla muestra 3. El argumento de tipo es Integer porque ArrayList guarda objetos y Integer es la forma objeto para enteros en esta forma de principiante. El diamond sigue copiando el tipo desde el lado izquierdo.

Bin ArrayList Integer prints 3

java
import java.util.ArrayList;

public class Bin {
    public static void main(String[] args) {
        ArrayList<Integer> nums = new ArrayList<>();
        nums.add(3);
        System.out.println(nums.get(0));
    }
}

Recorre la ejecución una vez. La lista está tipada para Integer. add(3) guarda el valor. get(0) lo devuelve. println escribe 3. Mantén las dos demos como dos formas didácticas. Primero demuestras una lista String. Luego una lista Integer. Ambas comparten import, diamond, add y get(0).
Si escribes ArrayList<String> y luego add(3), javac rechaza la discrepancia. Si escribes ArrayList<Integer> y luego add("oak"), javac rechaza eso también. El argumento de tipo es un contrato de lo que guarda la lista.

Hábitos de lista tipada

Mantén argumento de tipo y diamond juntos mientras practicas.

📊 Hábitos de Generics en Bin

Habit Typed shape Beginner check
Declare ArrayList<String> names angle brackets name the element type
Create new ArrayList<>() diamond copies the type from the left
Store String names.add("oak") value matches String
Store Integer nums.add(3) value matches Integer
Read get(0) returns the declared element type

Generics no es Flag ni Lambda

Argumentos del programa llenaron String[] args desde la línea de lanzamiento. Generics nombra el tipo de elemento de una colección que construyes en código. Lambda acortará algunas formas de llamada en una página opcional posterior. No mezcles esos tres trabajos en un archivo de principiante hoy.
oak en Bin es un valor guardado en lista. oak tras java Flag fue un argumento. Misma ortografía, distinto trabajo. Cuando un archivo Flag sobrante aún necesita palabras en la línea de comandos, déjalo como historia y ejecuta java Bin sin palabras extra.
Sin argumento de tipo, una lista raw pierde el contrato claro que enseña esta página. Mantén ArrayList<String> o ArrayList<Integer> en las demos que conservas. Mantén la sintaxis Lambda fuera de esta página hasta esa lección.

Comprobaciones de carpeta antes de Lambda

Lista la carpeta tras compilar con éxito. Deberías ver Bin.java y Bin.class juntos. Edita el fuente, guarda, ejecuta javac Bin.java, luego java Bin. Un .class viejo puede mostrar una impresión antigua si saltas compilar tras un cambio.
Si javac se queja de clases públicas duplicadas, mantén solo Bin como pública. Si la pantalla muestra [oak] en lugar de oak, imprimiste la lista entera en vez de get(0) — mantén la impresión didáctica como get(0). Si no imprime nada, confirma que main sigue llamando println.
No pegues bucles de argumentos Flag en Bin. No pegues avisos Scanner de Box en Bin. El trabajo opcional de Generics son listas tipadas con tipo de elemento claro.

Antes de Lambda opcional

Puedes mantener la clase pública Bin, importar ArrayList, construir ArrayList<String> con diamond, añadir "oak", imprimir get(0) como oak, luego construir ArrayList<Integer>, añadir 3 e imprimir 3. Compila con javac Bin.java y ejecuta java Bin. La tabla separa declarar, crear, guardar y leer. La página opcional siguiente es Lambda.
Mantén las demos Bin como par Generics claro. Mantén archivos de argumentos Flag fuera de esta página cuando practiques listas tipadas. Mantén archivos Mini Project Box fuera de esta página cuando practiques listas tipadas. Mantén trabajo Lambda fuera de esta página hasta esa lección. Esos hábitos son el control antes de seguir. Cuando la demo String muestra oak o la demo Integer muestra 3, Generics hizo su trabajo en esta lección y estás listo para Lambda si continúas el camino opcional.
Un último repaso de carpeta: una Bin pública, import presente, argumentos de tipo en corchetes angulares, diamond en new, valores add coincidentes, impresión get(0), sin espera Scanner, sin palabras de lanzamiento requeridas. Ejecuta javac Bin.java y java Bin una vez más con la demo abierta. Si la pantalla sigue mostrando oak o 3, la forma Generics es sólida y el curso puede pasar a Lambda opcional en la página siguiente. Prefiere un hábito claro de lista tipada por lectura para que cada paso enseñe el mismo mapa.

🧠 Pon a Prueba tu Conocimiento

Listo para Empezar

Pon a Prueba tu Conocimiento

Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema

❓
5
Preguntas
🎯
70%
Para Aprobar
♾️
∞
Tiempo
🔄
∞
Intentos

📝 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