Heim >Java >JavaErste Schritte >Detaillierte Einführung in Java-Generika

Detaillierte Einführung in Java-Generika

王林
王林nach vorne
2019-11-27 16:30:491954Durchsuche

Detaillierte Einführung in Java-Generika

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)71b63f436d94a50f17c5ed897161f1dd bedeutet, dass der durch den Platzhalter dargestellte Typ vom Typ ist T-Unterklasse.

(2)117c5a0bdb71ea9a9d0c2b99b03abe3e 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 List6b3d0130bba23ae47fe2b8e8cddf0195 logischerweise die übergeordnete Klasse von List, List und allen tatsächlichen Parametern des Typs Listb8eff36bbb42b608e3cc5aaf9728ac04.

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen