Heim > Java > JavaErste Schritte > Hauptteil

Detaillierte Einführung in Java-Generika

王林
Freigeben: 2019-11-27 16:30:49
nach vorne
1916 Leute haben es durchsucht

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 );
	}
}
Nach dem Login kopieren

Generische Grenze

(1) bedeutet, dass der durch den Platzhalter dargestellte Typ vom Typ ist T-Unterklasse.

(2) 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;
}
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage