Conceptos básicos de genéricos (T, inferencia)
Aprenda los parámetros de tipo genérico T , por qué proporcionan seguridad en tiempo de compilación y cómo el operador diamante infiere los tipos.
Conceptos básicos de genéricos (T, inferencia) es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 2 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Java Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Java Academy incluye 3 lecciones en total.
¿Por qué utilizar genéricos?
Los genéricos añaden tipos a los contenedores y las utilidades para que el compilador pueda protegerle. Ventajas:
- Seguridad de tipos — evita mezclar tipos accidentalmente.
- Sin conversiones — código más limpio.
- Reutilizables — una clase funciona con muchos tipos.
¿Qué es T?
T (parámetro de tipo) es un marcador de posición para un tipo real. Cuando escribe Box<String>, el compilador trata T como String dentro de ese uso.
Código: Box<T>
Box<T>: cuando proporciona String en lugar de T, solo se acepta String. Un tipo incorrecto produce un error en tiempo de compilación; no hay sorpresas en tiempo de ejecución.
public class Main {
// A tiny generic container
static class Box<T> {
private T value;
void set(T v) { value = v; }
T get() { return value; }
}
public static void main(String[] args) {
Box<String> bs = new Box<String>(); // T becomes String
bs.set("hello");
System.out.println(bs.get()); // no cast needed
// Box<Integer> bi = new Box<Integer>();
// bi.set("oops"); // would not compile: String is not Integer
}
}
Código: inferencia con diamante
Con <> (diamond), el compilador infiere el tipo del lado derecho. Si no es compatible con el tipo del lado izquierdo, no compila; esto proporciona seguridad.
public class Main {
static class Box<T> {
private T value;
Box() {}
Box(T v) { value = v; }
T get() { return value; }
}
public static void main(String[] args) {
// Type on the left, diamond on the right — compiler infers T
Box<Integer> a = new Box<>(123);
Box<String> b = new Box<>("hi");
System.out.println(a.get() + 1); // 124
System.out.println(b.get().toUpperCase());
}
}
Parámetros de tipo acotados
Bounds: algunos métodos genéricos requieren una capacidad como Comparable. Por ejemplo, <T extends Comparable<T>> significa que T debe poder compararse.
Código: método genérico acotado
Método genérico: <T extends Comparable<T>>. Integer y String son compatibles porque ambos implementan Comparable.
public class Main {
// Generic method: works for any Comparable type
static <T extends Comparable<T>> T min(T a, T b) {
return (a.compareTo(b) <= 0) ? a : b;
}
public static void main(String[] args) {
System.out.println(min(3, 7)); // Integer
System.out.println(min("apple", "banana")); // String (lexicographic)
}
}
Comprobación de conceptos básicos de genéricos
Comprobación rápida: ¿Cuál es la principal ventaja de utilizar genéricos como Box<String>?
Recapitulación
Recapitulación: T es un marcador de posición y su tipo se infiere mediante diamond. Con las restricciones (extends Comparable), hacemos que los métodos genéricos sean seguros y potentes.
Preguntas frecuentes
¿La lección «Conceptos básicos de genéricos (T, inferencia)» es gratis?
Sí — el texto completo de «Conceptos básicos de genéricos (T, inferencia)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Java Academy, actualiza a CoddyKit PRO. El curso de Java Academy incluye 3 lecciones en total.
¿Qué aprenderé en «Conceptos básicos de genéricos (T, inferencia)»?
Aprenda los parámetros de tipo genérico T , por qué proporcionan seguridad en tiempo de compilación y cómo el operador diamante infiere los tipos. Practicas Java Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Java Academy?
No se requiere experiencia previa. Java Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 3.
¿Cuánto tiempo toma la lección «Conceptos básicos de genéricos (T, inferencia)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Java Academy?
Sí. Cada lección de Java Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Interfaces en la práctica
- Conceptos básicos de genéricos (T, inferencia)
- Métodos/clases genéricos