Hvad er Generics i Java? - En begyndere guide



Denne artikel om Generics i Java giver et kort indblik i, hvad der er java generics og dets forskellige typer sammen med eksempler.

Overvej et eksempel, hvor du skal lave en liste over de levende ting på en lokalitet. Det betyder ikke noget, om det er et menneske, et dyr eller en plante. Alt, hvad der betyder noget, er en levende ting. I dette tilfælde vil du gruppere dem alle som 'levende ting' og ikke kategorisere dem. På samme måde, når du skal gemme nogle data, er det der betyder noget for dig indholdet og ikke datatypen, og det er her, du bruger Generics. Generiske stoffer i er en sprogfunktion, der tillader brug af generiske typer og metoder.

Nedenfor er listen over emner, som jeg vil dække i denne artikel:





Hvad er Generics i Java?

Generiske stoffer er et udtryk, der betegner et sæt sprogfunktioner relateret til definitionen og brugen af ​​generiske typer og metoder. Java Generiske metoder adskiller sig fra almindelige datatyper og -metoder. Før Generics brugte vi at gemme enhver form for genstande, dvs. ikke-generisk . Nu, Generics tvinge programmør til at gemme en bestemt type objekter.

Nu hvor du ved, hvad der er Generics i Java, lad os gå videre og forstå, hvorfor har du brug for Java Generics.



Hvorfor Java Generics?

Hvis du ser på klasser, så vil du bemærke, at de fleste klasser tager parameter / argument af typen Objekt. Dybest set i denne form kan de tage enhver Java-type som argument og returnere det samme objekt eller argument. De er i det væsentlige heterogen dvs. ikke af en lignende type.

FrameworkHierarchy - Generics i Java - Edureka

Undertiden i Java-applikationen er datatypen for input ikke fast. Indgangen kan være en heltal , til flyde eller . For at tildele input til af den rigtige datatype skulle der foretages forudgående kontrol. I den traditionelle tilgang blev datatypen for inputet efter at have taget input kontrolleret og derefter tildelt variablen for den rigtige datatype. Når denne logik blev brugt, blev kodenes længde og udførelsestiden øget. For at undgå dette Generics blev introduceret . Når du bruger Generics, kontrolleres parametrene i koden automatisk ved kompileringstidspunktet, og det indstiller datatypen som standard. Så det er her, du har brug for begrebet generics i Java.



Nu hvor du har fået en vis indsigt i Generics, lad os gå videre og se på de forskellige måder hvordanGeneriske kan anvendes på kildekoden.

Typer af Java Generics

Der er 4 forskellige måder, Generics kan anvendes på i Java, og de er som følger:

  1. Generisk type klasse
  2. Generisk interface
  3. Generisk metode
  4. Generisk konstruktør

Lad os nu forstå, hvordan generiske stoffer kan anvendes til typeklasse i dybden.

1. Generisk typeklasse

En klasse siges at være generisk, hvis den erklærer en eller flere typevariabler. Disse variable typer er kendt som typeparametrene for . Lad os forstå dette ved hjælp af et eksempel. I nedenstående eksempel opretter jeg en klasse med en egenskab x og ejendomstypen er et objekt.

klasse Genericclass {privat Objekt x offentligt ugyldigt sæt (Objekt x) {dette.x = x} offentligt Objekt get () {return x}}

Her, når du initialiserer klassen med en bestemt type, skal klassen kun bruges med den pågældende type. For eksempel. Hvis du vil have en forekomst af klassen til at holde værdien x af typen ‘ Snor ', Så skal programmør indstille og få den eneste type. Da jeg har erklæret ejendomstype til Object, er der ingen måde at håndhæve denne begrænsning på. En programmør kan indstille ethvert objekt og kan forvente enhver returneringsværditype fra få metode da alle Java-typer er undertyper af klasse.

For at håndhæve denne type begrænsninger kan vi bruge generiske stoffer som nedenfor:

klasse Genericclass {// T står for 'Type' privat T x offentligt ugyldigt sæt (T x) {this.x = x} offentlig T get () {return x}}

Nu kan du være sikker på, at klassen ikke vil blive misbrugt med forkerte typer. Et simpelt eksempel på' Generisk klasse ”Ser ud som vist nedenfor:

Genericclass-forekomst = ny Genericclass () -forekomst.sæt ('Edureka') -forekomst.sæt (10) // Dette øger kompileringsfejl

Så sådan fungerer det. Detteanalogi gælder også for grænsefladen. Lad os hurtigt se på et eksempel for at forstå, hvordan generiske typer oplysninger kan bruges i grænseflader i java.

2. Generisk interface

En henviser til de abstrakte datatyper. De tillader det at blive manipuleret uafhængigt af detaljerne i deres repræsentation. De danner også et hierarki i Sprog. Lad os forstå, hvordan generisk type kan anvendes på grænseflader i Java.

// Generisk interface definition interface GenericInterface {T2 PerformExecution (T1 x) T1 ReverseExecution (T2 x)} // En klasse, der implementerer generisk interface klasse Genericclass implementerer GenericInterface {public Integer PerformExecution (String x) {// eksekveringskode} offentlig String ReverseExecution ( Heltal x) {// udførelseskode}}

Jeg håber, du var i stand til at forstå, hvordan Generics kan anvendes til typeklasse og grænseflader. Lad os nu gå dybere ned i denne artikel og forstå, hvordan det er nyttigt for metoder og konstruktører.

3. Generiske metoder

Generiske metoder minder meget om generiske klasser. De adskiller sig fra hinanden i kun et aspekt, som omfang eller typeoplysninger er kun inde i metoden. Generiske metoder introducerer deres egne typeparametre.

Lad os forstå dette med et eksempel. Nedenfor er et eksempel på en generisk metode, der kan bruges til at finde alle forekomster af typeparametre i en liste over variabler.

public static int countAllOccurrences (T [] list, T element) {int count = 0 if (element == null) {for (T listElement: list) if (listElement == null) count ++} else {for (T listElement: list ) hvis (element.equals (listElement)) count ++} return count}

Hvis du bestiller en liste over Streng for at søge i denne metode, det fungerer fint. Men hvis du prøver at finde et nummer på listen over streng, vil det give kompileringstidsfejl.

Denne analogi ligner også konstruktøren. Lad os tage et eksempel til den generiske konstruktør og forstå, hvordan det fungerer.

flet sortering c ++ kode

4. Generisk konstruktør

Til bygherre er en kodeblok, der initialiserer det nyoprettede objekt. EN Bygger ligner en instansmetode i J ava men det er ikke en metode, da den ikke har en returtype. Konstruktøren har samme navn som klassen og ser sådan ud i J ava kode. Lad os nu tage et eksempel og forstå, hvordan det fungerer.

klasse Dimension {privat T længde privat T bredde privat T højde // Generisk konstruktør offentlig Dimension (T længde, T bredde, T højde) {super () this.length = længde this.width = bredde this.height = højde}}

I ovenstående eksempel har dimensionsklassens konstruktør typen information. Så du kan kun have en forekomst af dimension med alle attributter af en enkelt type. Så dette er, hvordan du kan bruge generiske type konstruktører. Jeg håber, du har forstået de generiske typer i Java.

Lad os nu gå videre og se på fordelene ved Generics i Java.

Fordele ved Generics i Java

1. Genanvendelighed af kode

Du kan sammensætte en strategi eller en klasse eller en én gang og brug til enhver type eller enhver måde, du har brug for.

2. Casting af individuelle typer er ikke påkrævet

Dybest set har du gendannet oplysninger fra hver gang skal du indtaste det. Typecasting ved hver opsving opgave er en vigtig migræne. For at udrydde denne tilgang blev generika introduceret.

3. Implementering af en ikke-generisk algoritme

Det kan beregne algoritmerne, der også fungerer på forskellige slags emner, der er typesikre.

Det handlede kun om fordelene ved Java Generics. Med dette kommer vi til slutningen af ​​denne artikel om Generics i Java. Jeg håber, du fandt det informativt og hjalp dig med at forstå Java Generics.

Tjek den af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Vi er her for at hjælpe dig med hvert trin på din rejse, for at blive et ud over dette java-interviewspørgsmål, kommer vi med en læseplan, der er designet til studerende og fagfolk, der ønsker at være Java-udvikler. Kurset er designet til at give dig et forspring i Java-programmering og træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

Har du et spørgsmål til os? Nævn det i kommentarfeltet i dette “Generics in Java ”Artikel og vi vender tilbage til dig hurtigst muligt.