Generics
Generics allow types to be parameters, enabling type-safe, reusable containers and algorithms that bind concrete types at instantiation.
Purpose
Write type-safe reusable code, avoiding duplication and runtime type checks.
Mechanism
Parameterized types: List<T> provides a List for any type T. Java uses type erasure (no generic information at runtime), C++ templates generate code for concrete types, Rust monomorphizes. Covariance/contravariance constrains subtype relationships.
Use cases
- Container library design
- Type-safe reuse
- API design