Lección 9: Generics y variance
Sin generics, cada estructura de datos se duplica: AppleBasket, OrangeBasket — o peor, una cesta de object con casts peligrosos en ejecución. En esta lección escribimos una sola clase con un parámetro de tipo <T>, y aprendemos cuándo out e in permiten poner una cesta de manzanas donde se espera una
Los generics son como un molde de horno que se llena cada vez con una masa distinta — el molde no cambia, solo el contenido. Y la regla de seguridad es simple: sacar "una fruta" de una caja de manzanas es seguro, pero echarle una sandía no lo es.
- Generics y variance
- Los parámetros de tipo permiten que una clase o interfaz sirva a todo tipo con seguridad; la variance (out/in) decide cuándo un subtipo puede reemplazar a un tipo base.
- parámetro de tipo <T>
- Un marcador de tipo que el código llamador rellena — Basket<Apple>, Basket<string> — aplicado por el compilador al compilar, sin casts.
- covarianza (out)
- Cuando T aparece solo como salida, IProducer<Apple> se permite como IProducer<Fruit> — todo lo que sale es fruta. La dirección inversa, in, cubre T solo de entrada.