Java Generics
Generics bieten einen Typsicherheitserkennungsmechanismus zur Kompilierungszeit, der es Programmierern ermöglicht, illegale Typen zu erkennen. Das Wesentliche bei Generika ist ein parametrisierter Typ, was bedeutet, dass der Datentyp, mit dem gearbeitet wird, als Parameter angegeben wird.
Wenn wir beispielsweise eine Sortiermethode schreiben möchten, die ein Ganzzahl-Array, ein String-Array oder sogar jede andere Art von Array sortieren kann, können wir Java-Generika verwenden.
Kostenlose Online-Lernvideo-Empfehlung: Java-Online-Video
1. Generische Methode
Sie können eine generische Methode schreiben, die beim Aufruf verschiedene Arten von Parametern empfangen kann. Abhängig von den an die generische Methode übergebenen Parametertypen verarbeitet der Compiler jeden Methodenaufruf entsprechend.
Zum Beispiel:
public static < E > void printArray( E[] inputArray ){ for ( E element : inputArray ){ System.out.printf( "%s ", element ); } }
Generische Grenze
(1) erweitert T> bedeutet, dass der durch den Platzhalter dargestellte Typ vom Typ ist T-Unterklasse.
(2) super T> gibt an, dass der durch den Platzhalter dargestellte Typ die übergeordnete Klasse des T-Typs ist.
2. Generische Klasse
Die Deklaration einer generischen Klasse ähnelt der Deklaration einer nicht generischen Klasse, außer dass danach ein Typparameter-Deklarationsteil hinzugefügt wird der Klassenname. Wie generische Methoden enthält auch der Typparameter-Deklarationsteil einer generischen Klasse einen oder mehrere durch Kommas getrennte Typparameter.
Ein generischer Parameter, auch Typvariable genannt, ist ein Bezeichner, der zur Angabe des Namens eines generischen Typs verwendet wird. Da sie einen oder mehrere Parameter akzeptieren, werden diese Klassen parametrisierte Klassen oder parametrisierte Typen genannt.
Zum Beispiel:
public class Box<T> { private T t; public void add(T t) { this.t = t; } public T get() { return t; } }
3. Typ-Wildcard?
Typ-Wildcard verwendet im Allgemeinen ? anstelle bestimmter Typparameter. Beispielsweise ist List> logischerweise die übergeordnete Klasse von List, List und allen tatsächlichen Parametern des Typs List
4. Typlöschung
Generika werden in Java grundsätzlich auf Compilerebene implementiert. Die Typinformationen in Generics sind nicht im generierten Java-Bytecode enthalten. Bei der Verwendung von Generika hinzugefügte Typparameter werden vom Compiler während der Kompilierung entfernt. Dieser Vorgang wird als Typlöschung bezeichnet.
Typen wie List und List, die im Code definiert sind, werden nach der Kompilierung zu List. Alles, was die JVM sieht, ist die Liste, und die durch Generics angehängten Typinformationen sind für die JVM unsichtbar.
Der grundlegende Prozess der Typlöschung ist ebenfalls relativ einfach. Der erste Schritt besteht darin, die spezifische Klasse zu finden, die zum Ersetzen der Typparameter verwendet wird. Diese konkrete Klasse ist normalerweise Object. Wenn eine Obergrenze für einen Typparameter angegeben ist, wird diese Obergrenze verwendet. Ersetzen Sie alle Typparameter im Code durch bestimmte Klassen.
Tutorials zu Java-bezogenen Artikeln: Einführung in die Java-Sprache
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Java-Generika. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!