Det ville være fint om vi kunne skrive en enkelt sorteringsmetode som kunne sortere elementene i et heltall-array, en streng-array , eller en matrise av hvilken som helst type som støtter bestilling.
Java Generiske metoder og generiske klasser gjør det mulig for programmerere å spesifisere, med en enkelt metodedeklarasjon, et sett med relaterte metoder, eller med en enkelt klassedeklarasjon, et sett av relaterte typer, henholdsvis.
Generics gir også kompileringstidstypesikkerhet som gjør det mulig for programmerere å fange ugyldige typer på kompileringstidspunktet.
Ved å bruke Java Generic-konsept kan vi skrive en generisk metode for å sortere en matrise av objekter, påkall deretter den generiske metoden med heltallmatriser, dobbeltmatriser, strengarrayer og så videre, for å sortere matriseelementene.
Generiske metoder
Du kan skrive en enkelt generisk metodedeklarasjon som kan være ca. fylt med argumenter av forskjellige typer. Basert på typene av argumentene som sendes til den generiske metoden, håndterer kompilatoren hver metodeanrop på riktig måte. Følgende er reglene for å definere generiske metoder –
-
Alle generiske metodedeklarasjoner har en typeparameterseksjon avgrenset av vinkelparenteser (< og >) som går foran metoden «s returtype (< E > i neste eksempel
-
Hver type parameterparameter inneholder en eller flere typeparametere atskilt med komma. En typeparameter, også kjent som en typevariabel, er en identifikator som spesifiserer et generisk typenavn .
-
Typeparametrene kan brukes til å erklære returtypen og fungere som plassholdere for typene av argumentene som sendes til den generiske metoden, som er kjent som faktiske typeargumenter.
-
En generisk metodes kropp blir erklært som den for enhver annen metode. Vær oppmerksom på at typeparametere kun kan representere referansetyper, ikke primitive typer (som int, double og char).
Eksempel
Følgende eksempel illustrerer hvordan vi kan skrive ut en rekke forskjellige typer ved hjelp av en enkelt generisk metode –
Dette vil gi følgende resultat –
Output
Array integerArray contains:1 2 3 4 5 Array doubleArray contains:1.1 2.2 3.3 4.4 Array characterArray contains:H E L L O
Parameter for avgrensede typer
Det kan være tider når du vil begrense hvilke typer typer som kan overføres til en typeparameter. For eksempel kan en metode som fungerer på tall vil bare godta forekomster av Number eller dets underklasser. Dette er hva parametrene for begrenset type er for.
Hvis du vil erklære en parameter for begrenset type, oppgir du navnet på parameteren, etterfulgt av det utvidede nøkkelordet, etterfulgt av dens øvre grense.
Eksempel
Følgende eksempel illustrerer hvordan extends brukes i generell forstand til å bety enten «extends» (som i klasser) eller «implementerer» (som i grensesnitt) . Dette eksemplet er generisk metode for å returnere det største av tre sammenlignbare objekter –
Dette vil gi følgende resultat –
Output
Max of 3, 4 and 5 is 5Max of 6.6,8.8 and 7.7 is 8.8Max of pear, apple and orange is pear
Generiske klasser
En generell klassedeklarasjon ser ut som en ikke-generisk klassedeklarasjon, bortsett fra at klassenavnet etterfølges av en typeparameterseksjon.
Som med generisk metoder, kan typeparameterseksjonen til en generisk klasse ha en eller flere typeparametere atskilt med komma. Disse klassene er kjent som parameteriserte klasser eller parametrerte typer fordi de godtar en eller flere parametere.
Eksempel
Følgende eksempel illustrerer hvordan vi kan definere en generisk klasse –
Dette vil gi følgende resultat –
Output
Integer Value :10String Value :Hello World