Erweiterte Anwendungen von Java -Generika umfassen: 1. Generische Methoden und Platzhalter verwenden, um die Flexibilit?t zu verbessern, wie z. B. Erweitert t> für schreibgeschützte Operationen und Super t> für schriftliche Operationen; 2. Verwenden Sie Typenl?schmechanismus und Grenzbeschr?nkungen, um die oberen oder unteren Grenzen der Generika zu definieren und Multi-Beh?lter zu unterstützen. 3.. Entwerfen Sie benutzerdefinierte generische Klassen und rekursive generische Strukturen, um die Konsistenz des Typs zu verbessern. 4. Verbessern Sie die Sicherheit der Typ, indem Sie primitive Typen vermeiden, rationaler Gebrauch von Wildcards, Umgang mit generischen Arrays und sorgf?ltig beurteilt.
Java -Generika sind ein wichtiges Instrument, um die Wiederverwendbarkeit der Code zu verbessern und Sicherheit zu typern. Viele Personen werden grundlegende Generika verwenden, wie z. List<string></string>
oder eine einfache Generika -Klasse schreiben. Aber wirklich beherrschende Java -Generika, insbesondere der erweiterte Teil, erm?glicht es Ihnen, sicherere, klarere und flexiblere Code zu schreiben.

Die folgenden Punkte sind der Kerninhalt, den Sie bei der Verwendung erweiterter Generika nicht vermeiden k?nnen.
1. Richtige Verwendung generischer Methoden und Platzhalter
Manchmal brauchen wir nicht die gesamte Klasse, um generisch zu sein. Wir brauchen nur eine bestimmte Methode, um generische Funktionen zu haben. Zu diesem Zeitpunkt k?nnen Sie generische Methoden anwenden.

public <T> void printlist (Liste <T> Liste) { für (t Element: Liste) { System.out.println (Artikel); } }
Diese Methode akzeptiert jede Art von List
und erfordert keine interne Verarbeitung.
Wenn Sie mit einer Situation konfrontiert sind, in der Sie sich über den spezifischen Typ nicht sicher sind, z. B. eine List<? extends Animal>
Sie wissen, dass es ein Animal
Subklassenobjekt enth?lt, aber Sie wissen nicht, welche Unterklasse es ist. In diesem Fall kann die Verwendung von Wildcard -Charakteren die Flexibilit?t erh?hen.

Gemeinsame Kombinationen:
-
? extends T
: schreibgeschützt, geeignet für Verbraucher (wie durchquer) -
? super T
: Beschreibbar, geeignet für Produzenten (wie das Hinzufügen von Elementen) - Ohne Platzhalter: lesbar oder beschreibbar, aber die Typen müssen genau übereinstimmen
2. Typl?re und Grenzgrenzen (begrenzte Typen)
Java -Generika werden w?hrend der Zusammenstellungsperiode implementiert und zur Laufzeit "gel?scht", was als Typ -L?schen bezeichnet wird. Dies bedeutet, dass Sie die spezifischen Typinformationen eines Generikums durch Reflexion nicht direkt erhalten, noch tun Sie T::class.java
wie Kotlin.
Sie k?nnen jedoch den Typbereich steuern, indem Sie die oberen oder unteren Grenzen von Generika begrenzen:
?ffentliche Klassenbox <T erweitert vergleichbar <t >> { // Hier muss t der Typ sein, der die vergleichbare Schnittstelle implementiert}
Der Vorteil davon ist, dass Sie compareTo()
-Methode aufrufen k?nnen, ohne sich Gedanken darüber zu machen, dass der Typ, der nicht unterstützt wird, nicht unterstützt wird.
Wenn Sie mehrere Einschr?nkungen wünschen, k?nnen Sie die Schnittstelle verwenden &
verbinden:
<T erweitert serialisierbar und klonbar>
Beachten Sie, dass es nur eine Klasse als Obergrenze geben kann und die anderen Schnittstellen geben müssen.
3.. Benutzerdefinierte Generika und rekursive Generika (selbstreferenceale Generika)
In einigen Szenarien müssen wir die Klasse auf ihre eigenen generischen Typen verweisen lassen, z. B. gemeinsame Listenknoten:
?ffentliche Klasse Node <t> { privater t -Wert; private Knoten <t> Weiter; // Konstruktor usw.
Zu den komplexeren geh?ren selbstbezogene Strukturen wie:
public abstract Class Basisode <T erweitert Basenodes <t >> {{ ?ffentliches Abstract t GetNext (); }
Dies ist üblich, wenn Sie einige DSL- oder Builder -Muster entwerfen, um sicherzustellen, dass der zurückgegebene Typ der aktuelle Unterklassentyp ist, nicht der übergeordnete Typ, wodurch erzwungene Rotation vermieden wird.
4. Praktische Vorschl?ge für die Verwendung von Generika zur Verbesserung der Art Sicherheit
- RAW -Typen vermeiden : Obwohl das Schreiben von Methoden wie
List list = new ArrayList();
sind mit alten Code kompatibel, sie verlieren die vom Generika mitgelieferte Typprüfung. - Versuchen Sie, Wildcards anstelle von bestimmten Typen zu verwenden : Wenn Sie keine bestimmten Typen betreiben müssen, ist
List>
Geeigneter alsList<object></object>
. - Generische Arrays sind unver?nderlich : Sie k?nnen
new T[10]
erstellen, da der Typ gel?scht wird.Array.newInstance()
kann stattdessen verwendet werden. - Verwenden Sie
instanceof
und Generika mit Vorsicht : Aufgrund des Typs des Typs istlist instanceof List<string></string>
illegal und kann nur aufList.class
beurteilt werden.
Grunds?tzlich ist das. Generika mag ein bisschen abstrakt erscheinen, aber wenn Sie die Entwurfslogik- und Anwendungsszenarien dahinter verstanden haben, werden Sie feststellen, dass sie nicht nur das Casting reduziert, sondern Ihnen auch hilft, viele potenzielle Fehler w?hrend der Zusammenstellung zu blockieren.
Das obige ist der detaillierte Inhalt vonAdvanced Java Generics für Type Sicherheit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen





Setupamaven/GradleProjectWithjax-rsdependencies-?hnlich Jersey; 2. CreatearestresourcEUntationSuchas@pathand@Get; 3.ConfiguretheApplicationviaApplicationSubclitsorweb.xml;

Maven ist ein Standardwerkzeug für Java -Projektmanagement und -aufbau. Die Antwort liegt in der Tatsache, dass Pom.xml verwendet wird, um Projektstruktur, Abh?ngigkeitsmanagement, Konstruktionslebenszyklusautomation und Plug-in-Erweiterungen zu standardisieren. 1. Verwenden Sie POM.xml, um Gruppen, Artefaktid, Version und Abh?ngigkeiten zu definieren; 2. Master -Kernbefehle wie MVNClean, Compile, Test, Paket, Installation und Bereitstellen; Fn. V. 5.

Um Hash -Werte mit Java zu generieren, kann es über die MessagedIGest -Klasse implementiert werden. 1. Holen Sie sich eine Instanz des angegebenen Algorithmus wie MD5 oder SHA-256; 2. Rufen Sie die Methode .update () auf, um die zu verschlüsselnden Daten zu übergeben. 3. Nennen Sie die Methode .Digest (), um ein Hash -Byte -Array zu erhalten. 4. Umwandeln Sie das Byte -Array in eine hexadezimale Zeichenfolge zum Lesen; Lesen Sie für Eingaben wie gro?e Dateien in Stücken und rufen Sie .update () mehrmals auf. Es wird empfohlen, SHA-256 anstelle von MD5 oder SHA-1 zu verwenden, um die Sicherheit zu gew?hrleisten.

Verwenden Sie zun?chst JavaScript, um die Einstellungen für Benutzersysteme und lokal gespeicherte Themeneinstellungen zu erhalten und das Seitenthema zu initialisieren. 1. Die HTML -Struktur enth?lt eine Schaltfl?che zum Ausl?sen von Themenwechsel. 2. CSS verwendet: root, um helle Themenvariablen zu definieren, .Dark-Mode-Klasse definiert dunkle Themenvariablen und wendet diese Variablen über var () an. 3.. JavaScript erkennt bevorzuge-farbige Scheme und liest LocalStorage, um das ursprüngliche Thema zu bestimmen. 4. Schalten Sie die Dark-Mode-Klasse im HTML-Element beim Klicken auf die Schaltfl?che und speichern Sie den aktuellen Status vor LocalStorage. 5. Alle Farb?nderungen werden mit einer übergangsanimation von 0,3 Sekunden begleitet, um den Benutzer zu verbessern

Ja, ein gemeinsames CSS-Dropdown-Menü kann mit reinem HTML und CSS ohne JavaScript implementiert werden. 1. Verwenden Sie verschachtelte UL und Li, um eine Menüstruktur zu erstellen. 2. Verwenden Sie die: Hover Pseudo-Klasse, um die Anzeige und das Verstecken von Pulldown-Inhalten zu steuern. 3.. Setzen Sie Position: Relativ für Eltern -Li, und das Untermenü wird unter Verwendung von Position positioniert: absolut; 4. Das untergeordnete Standards ist angezeigt: Keine, die angezeigt wird: Block, wenn sie schwebend sind; 5. Multi-Level-Pulldown kann durch Verschachtelung, kombiniert mit dem übergang und Fade-In-Animationen erzielt und an mobile Terminals mit Medienabfragen angepasst werden. Die gesamte L?sung ist einfach und erfordert keine JavaScript -Unterstützung, was für gro?e geeignet ist

Die Datei "Settings.JSON" befindet sich auf dem Pfad auf Benutzerebene oder Arbeitsbereichsebene und wird verwendet, um die VSCODE-Einstellungen anzupassen. 1. Benutzer-Level-Pfad: Windows ist C: \ Benutzer \\ AppData \ Roaming \ Code \ User \ Settings.json, MacOS is /users//library/applicationsupport/code/user/settings.json, Linux is /home/.config/code/usser/setings.json; 2. Pfad auf Arbeitsbereichsebene: .VSCODE/Einstellungen im Projekt Root Directory

Verwenden Sie datetime.strptime (), um Datumszeichenfolgen in DateTime -Objekt umzuwandeln. 1. Grundnutzung: Analyse "2023-10-05" als DateTime-Objekt über "%y-%M-%d"; 2. unterstützt mehrere Formate wie "%M/%d/%y", um amerikanische Daten zu analysieren, "%d/%m/%y", um britische Daten zu analysieren ",%b%d,%y%i:%m%p", um die Zeit mit AM/PM zu analysieren; 3.. Verwenden Sie DateUtil.Parser.Parse (), um unbekannte Formate automatisch zu schlie?en; 4. Verwenden Sie .D

Durch die Installation des EMMET-Plug-Ins k?nnen Sie das intelligente automatische Schlie?en von Tags erreichen und die Abkürzungssyntax unterstützen. 2. Aktivieren Sie "auto_match_enabled": true, damit Sublime einfache Tags automatisch vervollst?ndigen kann. 3. Verwenden Sie Alt. (Gewinn) oder Strg -Verschiebung. (MAC) Verknüpfungsschlüssel zum manuellen Schlie?en des aktuellen Tags - Es wird empfohlen, Emmet im t?glichen Leben zu verwenden. Die beiden letztgenannten Methoden k?nnen kombiniert werden, was effizient und einfach eingestellt ist.
