Sobes.tech
Middle+

Wat is type-covariantie?

sobes.tech AI

Antwoord van AI

De covariantie van types is een eigenschap van het typesysteem die het mogelijk maakt om een meer specifiek (subtype) type te gebruiken waar een meer algemeen (supertype) type wordt verwacht.

In de context van Java komt dit vaak tot uiting bij het werken met erfelijkheid en generics. Bijvoorbeeld, als de klasse Kat erft van Dier, dan maakt covariantie het mogelijk om Kat te gebruiken waar een Dier wordt verwacht.

Echter, in Java zijn generics standaard invariants, dat wil zeggen dat List<Kat> geen subtype is van List<Dier>. Om covariantie te ondersteunen, worden wildcard-types met ? extends gebruikt:

List<? extends Dier> dieren = new ArrayList<Kat>();

Hier betekent ? extends Dier dat de lijst objecten bevat van het type Dier of zijn subtypes, wat het veilig lezen van objecten uit de lijst mogelijk maakt, maar het toevoegen van nieuwe elementen (behalve null) verbiedt.

Op deze manier helpt covariantie om subtypes te gebruiken op plaatsen waar meer algemene types worden verwacht, terwijl de typesveiligheid en flexibiliteit van de code behouden blijven.