IT-lexicon › Programmeren › Generics

Generics

Programmeren Svenska → Bijgewerkt: 2026-10-03

Parametrisch polymorfisme — functies en types die over types geparametriseerd zijn. Vec<T> werkt voor T = String, T = i32 of wat dan ook. Standaard sinds ML (1973); mainstream sinds Java 5 (2004), C++-templates (eind jaren negentig), Rust en Go 1.18 (2022).

Twee implementaties: monomorfisatie (bij compilatie, één kopie per concreet type — Rust, C++, Go) en erasure (één runtimeversie, typeinformatie gewist — Java, TypeScript). Afweging: monomorfisatie geeft snellere runtime maar grotere binaries; erasure geeft kleinere binaries en minder optimalisatiemogelijkheden. Begrensde generics: fn sort<T: Ord> eist dat T de trait Ord implementeert. Higher-kinded types (HKT), generics over generics, bestaan in Haskell en Scala, maar ontbreken in Rust en Go. Go kreeg generics in versie 1.18, na dertien jaar verzet van het Go-team.

← Terug naar het lexicon