Generisk type
I datavitenskap er generiske typer datatyper med mulighet for å spesifisere typeparametere. Man snakker også om parametrisk polymorfisme .
En generisk type gjør det mulig å lage datatyper som trekker seg fra de underliggende typene. Så man kan programmere en liste med tall, en liste med tegn og en liste med datoer på samme måte; H. algoritmene for å sette inn, søke og slette vil alltid kjøre like. Det er derfor ønskelig å implementere listen uavhengig av disse typene.
For eksempel vil i Java en generell liste bli definert som følger:
List<T>
Her betyr List<T> generisk type , og Tkalles type parameter . Generiske typer finnes i alle programmeringsspråk som paradigmet for generisk programmering støtter.
I programmeringsspråk er det i utgangspunktet to tilnærminger for å støtte generiske typer. Den ene er at den samme koden brukes GenerischerTyp<T>for alle Ts og bruker spesifikke egenskaper via dynamisk lenking av metoder T. En annen måte, som bl.a. C ++ handler om å bruke maler . Typeparameteren erstattes direkte med den spesifikke typen ved kompileringstidspunktet. Hvis det er flere forskjellige typeparametere for en generisk type, opprettes det også flere klasser i C ++.
Med .NET , tar Microsoft en middelvei å kombinere fordelene ved begge metoder: Den generiske klasse bruker samme egenkode for alle referansetyper som typeparametere , ettersom den interne representasjon (en enkel referanse ) for alle referansetyper er den samme. Når du bruker verdityper som typeparametere, opprettes en egen innfødt kodebane for hver verditype ved kjøretid når den brukes for første gang.
Generiske typer på forskjellige programmeringsspråk
- C ++ implementerer generiske typer ved hjelp av maler, f.eks. B. Klassemaler.
- Generell programmering i Java
- C # og andre .NET-språk har tilbudt generikk siden. NET 2.0
- I programmeringsspråket Ada brukes generiske typer til å parametere pakker.
- Delphi har tilbudt støtte for generiske typer siden Delphi 2009, Free Pascal støtter generiske klasser fra versjon 2.2.
- Programmeringsspråket Haxe tilbyr generiske typer for Flash, JavaScript og server-side kjøring (alle er tre områder der generiske er ellers ikke mulig)
- Haskell tilbyr et veldig kraftig typesystem