Was sind Java-Generika?
Generika, also „parametrisierte Typen“. Wenn es um Parameter geht, ist das Bekannteste, dass es beim Definieren einer Methode formale Parameter gibt und die tatsächlichen Parameter dann übergeben werden, wenn die Methode aufgerufen wird. Wie versteht man also parametrisierte Typen? Wie der Name schon sagt, ist , das den Typ vom ursprünglichen spezifischen Typ aus parametrisiert, ähnlich wie die variablen Parameter in der Methode. Zu diesem Zeitpunkt wird der Typ auch in Form eines Parameters definiert (. (was als Typparameter bezeichnet werden kann) und dann beim Verwenden/Aufrufen den spezifischen Typ (Typargument) übergeben.
Das Wesentliche von Generika ist die Parametrisierung von Typen (die Arten spezifischer Einschränkungen formaler Parameter können durch verschiedene von Generika angegebene Typen gesteuert werden, ohne dass neue Typen erstellt werden müssen). Das heißt, bei der Verwendung von Generika wird der Datentyp der Operation als Parameter angegeben. Dieser Parametertyp kann in Klassen, Schnittstellen und Methoden verwendet werden und wird als generische Klasse, generische Schnittstelle bzw. generische Methode bezeichnet . (Empfohlenes Tutorial: Java-Tutorial )
Die Rolle von Generika:
Der Compiler prüft, ob die Elemente, die wir in den Container einfügen, den vom generischen Container definierten Erwartungen entsprechen. Wir müssen dem Compiler nur mitteilen, um welchen Containertyp es sich handelt. Der Compiler wandelt Elemente aus dem Container automatisch um.
Nach dem Eingreifen von Generika hat sich der Fokus des Programmierers von 2 Punkten auf 1 Punkt geändert:
Definieren Sie die Art der Containerverarbeitung, sodass die Inspektion des Einfüllens in den Container und die Transformation von erfolgen Das Herausnehmen des Containers erfolgt alle Hand in Hand. Es wird vom Compiler durchgeführt.
Vorteile:
1. Typsicherheit
Das Hauptziel von Generika besteht darin, die Typsicherheit von Java-Programmen zu verbessern. Durch die Kenntnis der Typbeschränkungen von Variablen, die mithilfe von Generika definiert wurden, kann der Compiler Typannahmen auf einem sehr hohen Niveau überprüfen. Ohne Generika existieren diese Annahmen nur in den Köpfen der Systementwickler.
Generics ermöglichen es dem Compiler, diese zusätzlichen Typbeschränkungen durchzusetzen, indem er diese zusätzlichen Typinformationen in der Variablendeklaration erfasst. Typfehler werden jetzt zur Kompilierungszeit abgefangen, anstatt zur Laufzeit als ClassCastException angezeigt zu werden. Durch die Verlagerung der Typprüfung von der Laufzeit zur Kompilierungszeit können Java-Entwickler Fehler früher und einfacher finden und die Programmzuverlässigkeit verbessern.
2. Casts eliminieren
Ein Nebenvorteil von Generika ist die Eliminierung vieler Casts im Quellcode. Dadurch wird der Code besser lesbar und die Fehlerwahrscheinlichkeit verringert. Obwohl die Reduzierung von Umwandlungen Code verbessern kann, der generische Klassen verwendet, gibt es bei der Deklaration generischer Variablen einen entsprechenden Nachteil. Die einmalige Verwendung einer generischen Variablen in einem einfachen Programm verringert nicht die Popularität des Codes. Bei großen Programmen, die generische Variablen jedoch mehrfach verwenden, kann die Anzahl der Likes akkumuliert werden, um die Anzahl der Likes zu reduzieren. Daher wird der Code klarer und sauberer, nachdem Generika die erzwungene Typkonvertierung beseitigt haben.
3. Höhere Betriebseffizienz
Bei der nicht generischen Programmierung führt die Übergabe eines einzelnen Typs als Objekt zu Boxing- und Unboxing-Vorgängen, die für beide Prozesse einen erheblichen Overhead verursachen. Nach der Einführung von Generika müssen keine Boxing- und Unboxing-Vorgänge mehr durchgeführt werden, sodass die Betriebseffizienz relativ hoch ist. Insbesondere in Systemen, in denen Sammelvorgänge sehr häufig stattfinden, ist die durch diese Funktion erzielte Leistungsverbesserung deutlicher.
4. Mögliche Leistungssteigerungen
Generika bieten die Möglichkeit größerer Optimierungen. Bei der anfänglichen Implementierung von Generics fügt der Compiler Casts (ohne Generics würden Java-Systementwickler diese Casts angeben) in den generierten Bytecode ein. Aber die Tatsache, dass dem Compiler mehr Typinformationen zur Verfügung stehen, eröffnet die Möglichkeit von Optimierungen in zukünftigen Versionen der JVM.
Das obige ist der detaillierte Inhalt vonWas sind Java-Generika?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!