Generics
Los genéricos permiten que los tipos sean parámetros, posibilitando contenedores y algoritmos con seguridad de tipos y reutilizables que ligan tipos concretos en la instanciación.
Propósito
Escribir código reutilizable con seguridad de tipos, evitando duplicación y comprobaciones de tipos en tiempo de ejecución.
Mecanismo
Tipos parametrizados: List<T> proporciona una List para cualquier tipo T. Java usa borrado de tipos (sin información genérica en tiempo de ejecución), las plantillas de C++ generan código para tipos concretos, Rust monomorfiza. La covarianza/contravarianza restringe las relaciones de subtipado.
Casos de uso
- Diseño de bibliotecas de contenedores
- Reutilización con seguridad de tipos
- Diseño de APIs