Quelle: Java war nicht universell, bis es in JDK 1.5 eingeführt wurde. Java-Generika werden durch Erasure implementiert. Wissen Sie, was Löschung ist? Schauen Sie nach unten.
Konzept: Reguläre Klassen und Methoden können nur mit bestimmten Basistypen oder benutzerdefinierten Klassen funktionieren. Wenn Sie Code schreiben möchten, der auf viele Codetypen angewendet werden kann, werden dem Code durch diese strenge Einschränkung viele Einschränkungen auferlegt. Generics implementieren das Konzept parametrisierter Typen und ermöglichen die Anwendung von Code auf mehrere Typen. Als Generika in Programmiersprachen auftauchten, bestand ihr ursprünglicher Zweck darin, Klassen und Methoden eine umfassende Ausdruckskraft zu ermöglichen.
[Empfohlenes Lernen: Java-Video-Tutorial]
Es gibt viele Gründe für das Aufkommen von Generika, einer der wichtigsten Gründe ist Containerklasse erstellen. Wir legen den Typ noch nicht fest, sondern entscheiden später, welcher Typ verwendet werden soll. Um dies zu erreichen, müssen Typparameter nach dem Klassennamen in spitzen Klammern verwendet werden. Wenn diese Klasse dann verwendet wird, werden Parameter dieses Typs durch den tatsächlichen Typ ersetzt. Im folgenden Beispiel ist t ein Typparameter. Der Code lautet wie folgt:
In vielen Quellcodes verfügen jedoch einige generische Klassen über mehrere generische Parameter, z. B. Java. UTIL-Funktion. Doppelfunktion mit drei Arten von Parametern t, u, r.
Generische Methoden machen Methoden unabhängig von Klassen. Beim Schreiben von generischem Code besteht die grundlegende Richtlinie darin, nach Möglichkeit generische Methoden zu verwenden. Das heißt, wenn Sie generische Methoden anstelle von generischen Methoden für die gesamte Klasse verwenden können, können Sie generische Methoden verwenden, weil sie die Dinge klarer machen. Darüber hinaus kann bei statischen Methoden nicht auf die Typparameter einer generischen Klasse zugegriffen werden. Wenn statische Methoden also Generalisierungsfunktionen verwenden müssen, müssen sie in generische Methoden umgewandelt werden.
Als ich den Abschnitt „Geheimnisse des Löschens“ im allgemeinen Kapitel von Java Programming Thoughts las, wurde mir besonders schwindelig, und als ich dann nach unten schaute, wurde ich zunehmend verwirrt . Besonders wenn man sich Grenzen und Wildcards ansieht, ist es etwas verwirrend. Schauen wir uns zunächst an, was Löschung ist. In generischem Code sind keine Informationen zu generischen Parametertypen verfügbar. Java-Generika werden durch Erasure implementiert, was bedeutet, dass bei der Verwendung von Generika jeder bestimmte Typ gelöscht wird und Sie nur noch über die Verwendung von Objekten Bescheid wissen. Da Generika ursprünglich nicht in Java eingeführt wurden, wurde sie so konzipiert, dass sie mit älteren Versionen des JDK kompatibel ist. ErAcess ist ein Kompromiss zwischen den generischen Implementierungen von Java. Wenn Sie also ausführen, ist list
Generika in Java: Beim Kompilieren stellt T einen Typ dar. Wenn keine Grenzen angegeben sind, entspricht es dem Objekt. Mithilfe des Schlüsselworts „extends“ können wir Grenzen für Generika festlegen. Um f() aufrufen zu können, können wir der generischen Klasse eine generische Klassengrenze geben und dem Compiler mitteilen, dass er Typen hinter der Grenze akzeptieren muss. Hier werden erweiterte Schlüsselwörter verwendet. Ändern Sie den obigen Code in
Die Funktionen von Java-Generika werden in vielen Open-Source-Frameworks häufig verwendet. Ich denke, dass ich mit Beginn der Programmierjahre in Zukunft ein anderes Verständnis haben werde. Jetzt kann ich nur noch durch das Lesen von Büchern so viel wissen.
Dieser Artikel stammt aus der Rubrik Java-Einführung, willkommen zum Lernen!
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Java-Generika (Zusammenfassung der Wissenspunkte). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!