Was sind Generika in Java? Ein Leitfaden für Anfänger zum Erlernen von Generika

Betrachten Sie ein Beispiel, bei dem Sie eine Liste der Lebewesen in einem Ort erstellen müssen. Dabei spielt es keine Rolle, ob es sich um einen Menschen, ein Tier oder eine Pflanze handelt. Alles, was zählt, ist ein Lebewesen. In diesem Fall würden Sie sie alle als „Lebewesen“ gruppieren und nicht kategorisieren. Wenn Sie einige Daten speichern müssen, ist der Inhalt und nicht der Datentyp für Sie von Bedeutung, und hier verwenden Sie Generics. Generics in Java ist eine Sprachfunktion, die die Verwendung generischer Typen und Methoden ermöglicht.

Was sind Generika in Java?

Generika ist ein Begriff, der eine Reihe von Sprachmerkmalen bezeichnet, die sich auf die Definition und Verwendung von generischen Typen und Methoden beziehen. Generische Java-Methoden unterscheiden sich von regulären Datentypen und Methoden. Vor Generics haben wir die verwendet Sammlung um jede Art von Objekten zu speichern, dh nicht generisch. Nun zwingen Generics den Java-Programmierer dazu, einen bestimmten Objekttyp zu speichern.

Nachdem Sie nun wissen, was Generics in Java sind, gehen wir weiter und verstehen, warum Sie Java Generics benötigen.

Warum Java-Generika?

Wenn Sie sich die Java Collection Framework-Klassen ansehen, werden Sie feststellen, dass die meisten Klassen Parameter/Argumente vom Typ Object verwenden. Grundsätzlich können sie in dieser Form jeden Java-Typ als Argument annehmen und dasselbe Objekt oder Argument zurückgeben. Sie sind im Wesentlichen heterogen dh nicht von einem ähnlichen Typ.

Collection-framework-hierarchy.png

Manchmal ist in der Java-Anwendung der Datentyp der Eingabe nicht festgelegt. Die Eingabe kann eine sein ganze Zahla schweben oder Java-String. Um die Eingabe der Variablen des richtigen Datentyps zuzuordnen, mussten vorab Prüfungen durchgeführt werden. Beim traditionellen Ansatz wurde nach der Übernahme der Eingabe der Datentyp der Eingabe überprüft und dann der Variablen des richtigen Datentyps zugewiesen. Wenn diese Logik verwendet wurde, wurden die Länge des Codes und die Ausführungszeit erhöht. Um es zu umgehen, Generika wurden eingeführt. Wenn Sie Generics verwenden, werden die Parameter im Code zur Kompilierzeit automatisch überprüft und der Datentyp standardmäßig festgelegt. Hier brauchen Sie also das Konzept der Generika in Java.

Nachdem Sie nun einige Einblicke in Generics gewonnen haben, wollen wir weitermachen und uns die verschiedenen Möglichkeiten ansehen, wie Generics auf den Quellcode angewendet werden können.

Arten von Java-Generika

Es gibt 4 verschiedene Möglichkeiten, wie Generika in Java angewendet werden können, und sie sind wie folgt:

  1. Generische Typklasse
  2. Generische Schnittstelle
  3. Generische Methode
  4. Generischer Konstruktor

Lassen Sie uns nun verstehen, wie Generika im Detail auf Typklassen angewendet werden können.

1. Klasse des generischen Typs

Eine Klasse wird als generisch bezeichnet, wenn sie eine oder mehrere Typvariablen deklariert. Diese Variablentypen sind als Typparameter der Java-Klasse bekannt. Lassen Sie uns dies anhand eines Beispiels verstehen. Im folgenden Beispiel erstelle ich eine Klasse mit einer Eigenschaft x und Typ der Eigenschaft ist ein Objekt.

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

Sobald Sie die Klasse mit einem bestimmten Typ initialisiert haben, sollte die Klasse hier nur mit diesem bestimmten Typ verwendet werden. ZB wenn Sie möchten, dass eine Instanz der Klasse den Wert enthält x vom Typ ‘ Schnur ‘, dann sollte der Programmierer den einzigen String-Typ setzen und erhalten. Da ich den Eigenschaftstyp als Objekt deklariert habe, gibt es keine Möglichkeit, diese Einschränkung durchzusetzen. Ein Programmierer kann jedes Objekt setzen und jeden Rückgabewerttyp erwarten Methode bekommen da alle Java-Typen Untertypen der Objektklasse sind.

Um diese Art von Einschränkung durchzusetzen, können wir Generika wie folgt verwenden:

class Genericclass<X> {
//T stands for "Type"
private T x;
public void set(T x) { this.x = x; }
public T get() { return x; }
}

Jetzt können Sie sicher sein, dass Klasse nicht mit falschen Typen missbraucht wird. Ein einfaches Beispiel für „Genericclass“ sieht wie folgt aus:

Genericclass<String> instance = new Genericclass<String>();
instance.set("Edureka");
instance.set(10); //This will raise compile time error

So funktioniert es also. Diese Analogie gilt auch für die Schnittstelle. Schauen wir uns schnell ein Beispiel an, um zu verstehen, wie generische Typinformationen in Schnittstellen in Java verwendet werden können.

2. Generische Schnittstelle

Eine Schnittstelle in Java bezieht sich auf die abstrakten Datentypen. Sie ermöglichen es, Java-Sammlungen unabhängig von den Details ihrer Darstellung zu manipulieren. Außerdem bilden sie eine Hierarchie in Objekt orientierte Programmierung Sprachen. Lassen Sie uns verstehen, wie generische Typen auf Schnittstellen in Java angewendet werden können.

//Generic interface definition
interface GenericInterface<T1, T2>
{
T2 PerformExecution(T1 x);
T1 ReverseExecution(T2 x);
}

//A class implementing generic interface
class Genericclass implements GenericInterface<String, Integer>
{
public Integer PerformExecution(String x)
{
//execution code
}
public String ReverseExecution(Integer x)
{
//execution code
}
}

Ich hoffe, Sie konnten verstehen, wie Generics auf Typklassen und Schnittstellen angewendet werden können. Lassen Sie uns nun tiefer in diesen Artikel eintauchen und verstehen, wie hilfreich er für Methoden und Konstruktoren ist.

3. Generische Methoden

Generische Methoden sind generischen Klassen sehr ähnlich. Sie unterscheiden sich nur in einem Aspekt, nämlich dem Bereichs- oder Typinformationen befinden sich nur innerhalb der Methode. Generische Methoden führen ihre eigenen Typparameter ein.

Lassen Sie uns dies anhand eines Beispiels verstehen. Unten ist ein Beispiel einer generischen Methode, die verwendet werden kann, um alle Vorkommen von Typparametern in einer Liste von Variablen zu finden.

public static <T> 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;
}

Wenn Sie eine Liste von Strings übergeben, um in dieser Methode zu suchen, wird es gut funktionieren. Aber wenn Sie versuchen, eine Zahl in der Liste der Zeichenfolgen zu finden, wird es einen Kompilierzeitfehler geben.

Diese Analogie ähnelt auch dem Konstruktor. Nehmen wir ein Beispiel für den generischen Konstruktor und verstehen, wie er funktioniert.

4. Generischer Konstruktor

Ein Konstrukteur ist ein Codeblock, der das neu erstellte Objekt initialisiert. EIN Konstrukteur ähnelt einer Instanzmethode in Java, ist aber keine Methode, da sie keinen Rückgabetyp hat. Der Konstrukteur hat den gleichen Namen wie die Klasse und sieht im Java-Code so aus. Lassen Sie uns nun ein Beispiel nehmen und verstehen, wie es funktioniert.

class Dimension<T>
{
private T length;
private T width;
private T height;

//Generic constructor
public Dimension(T length, T width, T height)
{
super();
this.length = length;
this.width = width;
this.height = height;
}
}

Im obigen Beispiel enthält der Konstruktor der Dimension-Klasse die Typinformationen. Sie können also eine Dimensionsinstanz mit allen Attributen nur eines einzigen Typs haben. So können Sie generische Typkonstruktoren verwenden. Ich hoffe, Sie haben die Arten von Generika in Java verstanden.

Gehen wir nun weiter und schauen uns die Vorteile von Generics in Java an.

Vorteile von Generika in Java

1. Wiederverwendbarkeit des Codes

Sie können eine Strategie, eine Klasse oder eine Schnittstelle einmal zusammenstellen und für jeden Typ oder jede Art und Weise verwenden, die Sie benötigen.

2. Einzelne Typen Casting ist nicht erforderlich

Grundsätzlich haben Sie jedes Mal Informationen aus ArrayList wiederhergestellt, wenn Sie sie typisieren müssen. Die Typisierung bei jeder Wiederherstellungsaufgabe ist eine große Migräne. Um diesen Ansatz zu beseitigen, wurden Generika eingeführt.

3. Implementieren eines nicht generischen Algorithmus

Es kann die Algorithmen berechnen, die für verschiedene Arten von Elementen funktionieren, die ebenfalls typsicher sind.

Das war alles über die Vorteile von Java Generics. Damit kommen wir zum Ende dieses Artikels über Generika in Java. Ich hoffe, Sie fanden es informativ und haben Ihnen geholfen, Java Generics zu verstehen.

Haben Sie eine Frage an uns? Bitte erwähnen Sie es im Kommentarbereich dieses Artikels und wir werden uns so schnell wie möglich bei Ihnen melden.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *