Skip to content
uencoder

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

Related tools

References