Java Generics (mit Beispielen)

In diesem Tutorial lernen wir anhand von Beispielen Java Generics, das Erstellen von Generics-Klassen und -Methoden sowie deren Vorteile.

Mit Java Generics können wir eine einzelne Klasse, Schnittstelle und Methode erstellen, die mit verschiedenen Datentypen (Objekten) verwendet werden kann.

Dies hilft uns, unseren Code wiederzuverwenden.

Hinweis : Generics funktioniert nicht mit primitiven Typen ( int, float, char, usw.).

Java Generics Class

Wir können eine Klasse erstellen, die mit jedem Datentyp verwendet werden kann. Eine solche Klasse ist als Generics-Klasse bekannt.

So können wir eine generische Klasse in Java erstellen:

Beispiel: Erstellen Sie eine generische 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; ) )

Ausgabe

 Generische Klasse gibt zurück: 5 Generische Klasse gibt zurück: Java-Programmierung

Im obigen Beispiel haben wir eine generische Klasse mit dem Namen GenericsClass erstellt. Diese Klasse kann verwendet werden, um mit jedem Datentyp zu arbeiten.

 class GenericsClass (… )

Hier gibt T, das in der spitzen Klammer verwendet wird , den Typparameter an . Innerhalb der MainKlasse haben wir zwei Objekte von GenericsClass erstellt

  • intObj - Hier wird der Typparameter T durch ersetzt Integer. Jetzt arbeitet die GenericsClass mit ganzzahligen Daten.
  • stringObj - Hier wird der Typparameter T durch ersetzt String. Jetzt arbeitet die GenericsClass mit Zeichenfolgendaten.

Java Generics-Methode

Ähnlich wie bei der Generics-Klasse können wir auch eine Methode erstellen, die mit jedem Datentyp verwendet werden kann. Eine solche Klasse ist als generische Methode bekannt.

So können wir eine generische Klasse in Java erstellen:

Beispiel: Erstellen Sie eine generische Methode

 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); ) )

Ausgabe

 Generics-Methode: Daten übergeben: Java-Programmierung Generics-Methode: Daten übergeben: 25

Im obigen Beispiel haben wir eine generische Methode mit dem Namen genericsMethod erstellt.

 public void genericMethod(T data) (… )

Hier wird der Typparameter nach dem Modifikator publicund vor dem Rückgabetyp eingefügt void.

Wir können die generische Methode aufrufen, indem wir den tatsächlichen Typ und in die Klammer vor dem Methodennamen setzen.

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

Hinweis : Wir können die generische Methode aufrufen, ohne den Typparameter einzuschließen. Beispielsweise,

 demo.genericsMethod("Java Programming");

In diesem Fall kann der Compiler den Typparameter basierend auf dem an die Methode übergebenen Wert abgleichen.

Begrenzte Typen

Im Allgemeinen kann der Typparameter alle Datentypen akzeptieren (außer primitiven Typen).

Wenn wir jedoch Generika nur für bestimmte Typen verwenden möchten (z. B. Daten von Zahlentypen akzeptieren), können wir begrenzte Typen verwenden.

Bei gebundenen Typen verwenden wir das extendsSchlüsselwort. Beispielsweise,

 

Dies bedeutet, dass T nur Daten akzeptieren kann, die Subtypen von A sind.

Beispiel: Begrenzte Typen

 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(); ) )

Im obigen Beispiel haben wir eine Klasse mit dem Namen GenericsClass erstellt. Beachten Sie den Ausdruck, beachten Sie den Ausdruck

  

Hier wird GenericsClass mit begrenztem Typ erstellt. Dieses Mittel GenericsClass kann nur funktionieren , mit Datentypen , die Kinder sind Number( Integer, Double, und so weiter).

Wir haben jedoch ein Objekt der generics-Klasse mit erstellt String. In diesem Fall wird der folgende Fehler angezeigt.

GenericsClass obj = new GenericsClass (); Grund: Inferenzvariable T hat inkompatible Grenzen Gleichheitsbeschränkungen: String untere Grenzen: Zahl, wobei T eine Typvariable ist: T erweitert Zahl, die in der Klasse GenericsClass deklariert ist

Vorteile von Java Generics

1. Wiederverwendbarkeit des Codes

Mit Hilfe von Generika in Java können wir Code schreiben, der mit verschiedenen Datentypen funktioniert. Beispielsweise,

 public void genericsMethod(T data) (… )

Hier haben wir eine generische Methode erstellt. Dieselbe Methode kann verwendet werden, um Operationen an ganzzahligen Daten, Zeichenfolgendaten usw. auszuführen.

2. Typprüfung zur Kompilierungszeit

Der Typparameter von Generika gibt Auskunft über den Datentyp, der im Generika-Code verwendet wird. Beispielsweise,

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

Hier wissen wir, dass GenericsClass nur mit IntegerDaten arbeitet.

Wenn wir nun versuchen, andere Daten als Integer an diese Klasse zu übergeben, generiert das Programm beim Kompilieren einen Fehler.

3. Wird mit Sammlungen verwendet

Das Sammlungsframework verwendet das Konzept der Generika in Java. Beispielsweise,

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

Im obigen Beispiel haben wir dieselbe ArrayList-Klasse verwendet, um mit verschiedenen Datentypen zu arbeiten.

Ähnlich wie ArrayListandere Sammlungen ( LinkedList, Queue, Maps, usw.) sind auch Generika in Java.

Interessante Beiträge...