Vad är Generics i Java? - En nybörjarguide



Denna artikel om Generics i Java ger en kort inblick i vad som är java generics och dess olika typer tillsammans med exempel.

Tänk på ett exempel där du måste göra en lista över levande saker på en ort. Det spelar ingen roll om det är en människa, ett djur eller en växt. Allt som är viktigt är en levande sak. I det här fallet skulle du gruppera dem alla som ”levande saker” och inte kategorisera dem. På samma sätt, när du måste lagra en del data, är det viktigt för dig innehållet och inte datatypen, och det är där du använder Generics. Generika i är en språkfunktion som tillåter användning av generiska typer och metoder.

Nedan är listan över ämnen som jag kommer att täcka i den här artikeln:





Vad är Generics i Java?

Generika är en term som betecknar en uppsättning språkfunktioner relaterade till definitionen och användningen av generiska typer och metoder. Java Generic-metoder skiljer sig från vanliga datatyper och metoder. Innan Generics använde vi för att lagra alla typer av föremål, dvs. icke-generisk . Generics tvingar nu programmerare för att lagra en viss typ av objekt.

c ++ sortera en matris

Nu när du vet vad som är Generics i Java, ska vi gå vidare och förstå varför behöver du Java Generics.



Varför Java Generics?

Om du tittar på klasser, då kommer du att observera att de flesta klasser tar parameter / argument av typen Objekt. I grund och botten, i den här formen, kan de ta alla Java-typer som argument och returnera samma objekt eller argument. De är i huvudsak heterogen dvs inte av liknande typ.

FrameworkHierarchy - Generics in Java - Edureka

Ibland är datatypen för ingången inte fixad i Java-applikationen. Ingången kan vara en heltal , till flyta eller . För att tilldela ingången till av rätt datatyp, måste tidigare kontroller genomföras. I den traditionella metoden, efter att ha tagit inmatningen, kontrollerades datatypen för ingången och tilldelades sedan variabeln för rätt datatyp. När denna logik användes ökade koden och körtiden längre. För att undvika detta, Generics introducerades . När du använder Generics kontrolleras parametrarna i koden automatiskt vid kompileringen och den ställer in datatypen som standard. Så det är här du behöver begreppet generics i Java.



Nu när du har fått en del insikter om Generics, låt oss gå vidare och titta på de olika sätten hurGenerics kan tillämpas på källkoden.

Typer av Java Generics

Det finns fyra olika sätt Generics kan tillämpas på i Java och de är som följer:

  1. Generisk typklass
  2. Generiskt gränssnitt
  3. Generisk metod
  4. Generisk konstruktör

Låt oss nu förstå hur generika kan tillämpas på typklass på djupet.

1. Generisk typklass

En klass sägs vara generisk om den deklarerar en eller flera typvariabler. Dessa variabeltyper är kända som typparametrarna för . Låt oss förstå detta med hjälp av ett exempel. I exemplet nedan skapar jag en klass med en egenskap x och egenskapens typ är ett objekt.

klass Genericclass {private Object x public void set (Object x) {this.x = x} public Object get () {return x}}

Här, när du initialiserat klassen med en viss typ, bör klassen endast användas med den specifika typen. T.ex. Om du vill att en instans av klassen ska hålla värdet x av typen ” Sträng ”, Då skulle programmeraren ställa in och få det enda typ. Eftersom jag har förklarat egenskapstyp till objekt finns det inget sätt att genomdriva denna begränsning. En programmerare kan ställa in vilket objekt som helst och kan förvänta sig vilken typ av returvärde som helst få metoden eftersom alla Java-typer är undertyper av klass.

För att genomdriva denna typ av begränsningar kan vi använda generiska produkter enligt nedan:

klass Genericclass {// T står för 'Typ' privat T x offentlig tomrumsuppsättning (T x) {this.x = x} offentlig T get () {return x}}

Nu kan du vara säker på att klassen inte kommer att missbrukas med fel typer. Ett enkelt exempel på' Genericclass ”Ser ut som visas nedan:

Genericclass-förekomst = ny Genericclass () instans.set ('Edureka') instans.set (10) // Detta ökar kompileringstidsfelet

Så det är så det fungerar. Dettaanalogi gäller också för gränssnittet. Låt oss snabbt titta på ett exempel för att förstå hur information om generisk typ kan användas i gränssnitt i Java.

2. Generiskt gränssnitt

Ett refererar till de abstrakta datatyperna. De tillåter att manipuleras oberoende av detaljerna i deras representation. De bildar också en hierarki i språk. Låt oss förstå hur generisk typ kan tillämpas på gränssnitt i Java.

// Definitionsgränssnitt för generiskt gränssnitt GenericInterface {T2 PerformExecution (T1 x) T1 ReverseExecution (T2 x)} // En klass som implementerar generiskt gränssnittsklass Genericclass implementerar GenericInterface {public Integer PerformExecution (String x) {// exekveringskod} offentlig String ReverseExecution ( Heltal x) {// körningskod}}

Jag hoppas att du kunde förstå hur Generics kan tillämpas på typklass och gränssnitt. Låt oss nu fördjupa oss i den här artikeln och förstå hur det är till hjälp för metoder och konstruktörer.

3. Generiska metoder

Generiska metoder liknar mycket generiska klasser. De skiljer sig från varandra i endast en aspekt som Omfattnings- eller typinformation finns bara i metoden. Generiska metoder introducerar sina egna typparametrar.

Låt oss förstå detta med ett exempel. Nedan följer ett exempel på en generisk metod som kan användas för att hitta alla förekomster av typparametrar i en lista med 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 ) if (element.equals (listElement)) count ++} return count}

Om du skickar en lista över Sträng för att söka i den här metoden, det fungerar bra. Men om du försöker hitta ett nummer i listan över strängar kommer det att ge kompileringsfel.

skillnad mellan ansible och kock

Denna analogi liknar konstruktören också. Låt oss ta ett exempel för den generiska konstruktören och förstå hur det fungerar.

4. Generisk konstruktör

Till byggaren är ett kodblock som initialiserar det nyskapade objektet. A byggare liknar en instansmetod i J ava men det är inte en metod eftersom den inte har någon returtyp. Konstruktören har samma namn som klassen och ser ut så här i J ava koda. Låt oss nu ta ett exempel och förstå hur det fungerar.

klass Dimension {privat T-längd privat T-bredd privat T-höjd // Generisk konstruktör offentlig Dimension (T-längd, T-bredd, T-höjd) {super () this.length = längd this.width = bredd this.height = höjd}}

I exemplet ovan har dimensionsklassens konstruktör typinformation. Så du kan ha en förekomst av dimension med alla attribut av en enda typ. Så detta är hur du kan använda generiska typkonstruktörer. Jag hoppas att du förstod vilka typer av generika i Java.

hur man klonar objekt i Java

Låt oss nu gå vidare och titta på fördelarna med Generics i Java.

Fördelar med Generics i Java

1. Återanvändbar kod

Du kan komponera en strategi eller en klass eller en en gång och använd för alla typer eller på något sätt som du behöver.

2. Enskilda typer av gjutning krävs inte

I grund och botten har du återhämtat information från varje gång måste du skriva det. Typprognoser vid varje återhämtningsuppgift är en stor migrän. För att utrota detta tillvägagångssätt introducerades generika.

3. Implementering av en icke-generisk algoritm

Det kan beräkna algoritmerna som fungerar på olika typer av objekt som också är typsäkra.

Det handlade om fördelarna med Java Generics. Med detta kommer vi till slutet av den här artikeln om Generics in Java. Jag hoppas att du tyckte det var informativt och hjälpte dig att förstå Java Generics.

Kolla in av Edureka, ett pålitligt inlärningsföretag online med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Vi är här för att hjälpa dig med varje steg på din resa, för att bli en förutom de här Java-intervjufrågorna, kommer vi med en läroplan som är utformad för studenter och yrkesverksamma som vill vara Java-utvecklare. Kursen är utformad för att ge dig ett försprång till Java-programmering och träna dig för både kärn- och avancerade Java-koncept tillsammans med olika Java-ramverk som Hibernate & Spring.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen i detta ”Generics in Java ”Artikel så återkommer vi så snart som möjligt.