Java Generics (med eksempler)

I denne veiledningen vil vi lære om Java Generics, hvordan du lager generiske klasser og metoder og fordelene ved hjelp av eksempler.

Java Generics lar oss lage en enkelt klasse, grensesnitt og metode som kan brukes med forskjellige typer data (objekter).

Dette hjelper oss med å gjenbruke koden vår.

Merk : Generics fungerer ikke med primitive typer ( int, float, char, etc).

Java Generics-klasse

Vi kan lage en klasse som kan brukes med alle typer data. En slik klasse er kjent som Generics Class.

Slik kan vi lage en generisk klasse i Java:

Eksempel: Lag en generisk klasse

 class Main ( public static void main(String() args) ( // initialize generic class // with Integer data GenericsClass intObj = new GenericsClass(5); System.out.println("Generic Class returns: " + intObj.getData()); // initialize generic class // with String data GenericsClass stringObj = new GenericsClass("Java Programming"); System.out.println("Generic Class returns: " + stringObj.getData()); ) ) // create a generics class class GenericsClass ( // variable of T type private T data; public GenericsClass(T data) ( this.data = data; ) // method that return T type variable public T getData() ( return this.data; ) )

Produksjon

 Generisk klasse returnerer: 5 Generisk klasse returnerer: Java-programmering

I eksemplet ovenfor har vi opprettet en generisk klasse som heter GenericsClass. Denne klassen kan brukes til å jobbe med alle typer data.

 class GenericsClass (… )

Her angir T som brukes inne i vinkelfestet typen parameter . Inne i Mainklassen har vi laget to objekter av GenericsClass

  • intObj - Her erstattes typeparameteren T med Integer. Nå fungerer GenericsClass med heltallsdata.
  • stringObj - Her erstattes typeparameteren T med String. Nå fungerer GenericsClass med strengdata.

Java Generics Method

I likhet med generikklassen kan vi også lage en metode som kan brukes med alle typer data. En slik klasse er kjent som Generics Method.

Slik kan vi lage en generisk klasse i Java:

Eksempel: Lag en generisk metode

 class Main ( public static void main(String() args) ( // initialize the class with Integer data DemoClass demo = new DemoClass(); // generics method working with String demo.genericsMethod("Java Programming"); // generics method working with integer demo.genericsMethod(25); ) ) class DemoClass ( // creae a generics method public void genericsMethod(T data) ( System.out.println("Generics Method:"); System.out.println("Data Passed: " + data); ) )

Produksjon

 Generisk metode: Data bestått: Java Programmering Generisk metode: Data bestått: 25

I eksemplet ovenfor har vi opprettet en generisk metode som heter genericsMethod.

 public void genericMethod(T data) (… )

Her settes typeparameteren inn etter modifisereren publicog før returtypen void.

Vi kan kalle generisk metode ved å plassere den faktiske typen og inne i braketten før metodens navn.

 demo.genericMethod("Java Programming"); demo.genericMethod(25);

Merk : Vi kan kalle generisk metode uten å inkludere typeparameteren. For eksempel,

 demo.genericsMethod("Java Programming");

I dette tilfellet kan kompilatoren matche typeparameteren basert på verdien som sendes til metoden.

Avgrensede typer

Generelt kan typeparameteren godta alle datatyper (unntatt primitive typer).

Imidlertid, hvis vi bare vil bruke generiske produkter for noen spesifikke typer (for eksempel akseptere data av nummertyper), kan vi bruke avgrensede typer.

Når det gjelder innbundne typer, bruker vi extendsnøkkelordet. For eksempel,

 

Dette betyr at T bare kan godta data som er undertyper av A.

Eksempel: Avgrensede typer

 class GenericsClass ( public void display() ( System.out.println("This is a bounded type generics class."); ) ) class Main ( public static void main(String() args) ( // create an object of GenericsClass GenericsClass obj = new GenericsClass(); ) )

I eksemplet ovenfor har vi opprettet en klasse som heter GenericsClass. Legg merke til uttrykket, legg merke til uttrykket

  

Her er GenericsClass opprettet med begrenset type. Dette betyr GenericsClass kan bare arbeide med datatyper som er barn Number( Integer, Doubleog så videre).

Imidlertid har vi laget et objekt fra generikerklassen med String. I dette tilfellet får vi følgende feil.

GenericsClass obj = nye GenericsClass (); årsak: inferensvariabel T har uforenlige grenser likhetsbegrensninger: Streng nedre grenser: Antall der T er en typevariabel: T strekker seg Antall deklarert i klasse GenericsClass

Fordeler med Java Generics

1. Koden gjenbrukbarhet

Ved hjelp av generiske produkter i Java kan vi skrive kode som vil fungere med forskjellige typer data. For eksempel,

 public void genericsMethod(T data) (… )

Her har vi laget en generisk metode. Den samme metoden kan brukes til å utføre operasjoner på heltallsdata, strengdata og så videre.

2. Kompileringstidskontroll

Den typen parameter av generiske gir informasjon om typen av data som brukes i den generiske kode. For eksempel,

 // using Generics GenericsClass list = new GenericsClass();

Her vet vi at GenericsClass bare jobber med Integerdata.

Nå, hvis vi prøver å overføre andre data enn Integer til denne klassen, vil programmet generere en feil på kompileringstidspunktet.

3. Brukes med samlinger

Samlingenes rammeverk bruker begrepet generikk i Java. For eksempel,

 // creating a string type ArrayList ArrayList list1 = new ArrayList(); // creating a integer type ArrayList ArrayList list2 = new ArrayList();

I eksemplet ovenfor har vi brukt den samme ArrayList-klassen til å jobbe med forskjellige typer data.

I likhet med ArrayListandre samlinger ( LinkedList, Queue, Maps, og så videre) er også generiske i Java.

Interessante artikler...