Was ist das Konzept der Generika in Java?
Sep 26, 2025 am 05:19 AMGenerika in Java bieten Sicherheit für Kompilierzeit und eliminieren die Notwendigkeit des Gie?ens, indem Klassen, Schnittstellen und Methoden mit Typparametern arbeiten k?nnen. Beispielsweise stellt die Verwendung von List
Generika in Java ist eine Funktion, mit der Sie Klassen, Schnittstellen und Methoden schreiben k?nnen, die mit unterschiedlichen Datentypen funktionieren und gleichzeitig die Sicherheit des Kompilierungszeittyps bereitstellen k?nnen. Es erm?glicht Ihnen, eine Klasse oder Methode mit Platzhaltern (Typparametern) für die Datentypen zu definieren, die bei Verwendung der Klasse oder Methode angegeben werden.

Warum Generika nützlich sind
Bevor Generika in Java 5 eingeführt wurden, konnten Sammlungen wie ArrayList
jegliche Art von Objekten enthalten. Diese Flexibilit?t lag mit Kosten: Sie mussten beim Abrufen von Objekten manuell wirken, und es gab keine überprüfung der Kompilierung, um die Konsistenz zu gew?hrleisten. Zum Beispiel:
Listlist = new ArrayList (); list.add ("Hallo"); String s = (String) list.get (0); // erfordert Casting
Wenn ein falscher Typ hinzugefügt wurde (wie eine Integer
), kann eine ClassCastException
zur Laufzeit auftreten.

Mit Generics k?nnen Sie den Typ angeben, den die Sammlung enthalten sollte:
Liste <String> list = new ArrayList <> (); list.add ("Hallo"); String S = list.get (0); // kein Casting ben?tigt
Jetzt stellt der Compiler sicher, dass nur String
-Objekte hinzugefügt werden k?nnen, und Sie erhalten die Sicherheitstypsicherheit ohne explizites Casting.

Wie Generika funktionieren
Sie definieren einen Generikum mit Angle Brackets <T>
, wobei T
für "Typ" steht (aber Sie k?nnen eine gültige Bezeichnung verwenden). Zum Beispiel:
?ffentliche Klassenbox <t> { privater t -Wert; public void set (t value) { this.Value = Wert; } public t Get () { Rückgabewert; } }
Hier ist T
ein Typparameter. Wenn Sie ein Box
erstellen, geben Sie den tats?chlichen Typ an:
Box <string> stringbox = neues kasten <> (); StringBox.set ("Hallo"); Box <Ganzzahl> intbox = new Box <> (); intbox.set (42);
Schlüsselvorteile
- Geben Sie Sicherheit ein : Fehler werden zur Kompilierungszeit anstelle der Laufzeit erfasst.
- Beseitigung des Casting : Keine Notwendigkeit, Objekte beim Abrufen zu gie?en.
- Wiederverwendbarkeit von Code : Eine generische Klasse kann mit vielen Typen funktionieren.
Gemeinsame generische Typen
Javas Sammlungsrahmen nutzt die Generika stark:
-
List<T>
-
Set<T>
-
Map<K, V>
-
Queue<T>
Sie k?nnen auch Grenztypparameter verwenden, um die verwendeten Typen einzuschr?nken:
public <t erweitert die Zahl> Doppelsumme (t a, t b) { return a.doubleValue () B. doubleValue (); }
Diese Methode akzeptiert nur Typen, die Number
sind.
Typlase
Ein wichtiges Konzept für Generika ist das Typ -L?schen . W?hrend der Zusammenstellung werden generische Typinformationen entfernt (gel?scht) und durch Rohtypen (z. B. Object
oder den gebundenen Typ) ersetzt. Dies bedeutet, dass zur Laufzeit eine List<String>
und eine List<Integer>
nur List
werden. Dies geschah für die Rückw?rtskompatibilit?t mit ?lteren Java -Versionen.
Zum Beispiel:
List <String> Strings = New ArrayList <> (); List <Ganzzahl> ints = new ArrayList <> (); System.out.println (Strings.getClass () == ints.getClass ()); // WAHR
Dies bedeutet auch, dass Sie einen generischen Typ nicht direkt instanziieren k?nnen:
?ffentliche Klassencontainer <t> { // t item = new t (); // nicht erlaubt - T wird zur Laufzeit gel?scht }
Wildcards in Generika
Generika unterstützen Wildcards ( ?
), Um flexible Subtypen zu erm?glichen:
-
<?>
- Unbekannter Typ -
<? extends T>
- Jeder Typ, derT
oder eine Unterklasse vonT
ist -
<? super T>
- Jeder Typ, derT
oder eine Superklasse vonT
ist
Beispiel:
public static void printNumbers (Liste <? Erweitert Nummer> Liste) { für (Nummer n: Liste) { System.out.println (n); } }
Diese Methode kann List<integer></integer>
, List<double></double>
usw. akzeptieren.
Grunds?tzlich machen Generika Ihren Code sicherer, sauberer und wiederverwendbarer, indem Sie flexible, aber type-sichere Komponenten schreiben k?nnen.
Das obige ist der detaillierte Inhalt vonWas ist das Konzept der Generika in Java?. 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.

Stock Market GPT
KI-gestützte Anlageforschung für intelligentere Entscheidungen

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)

Die optionale Klasse wird verwendet, um Werte sicher zu verarbeiten, die null sein k?nnen, wodurch Null -Zeiger -Ausnahmen vermieden werden. 1. Erstellen Sie eine Instanz mit optional.ofnullierbar, um Nullwerte zu verarbeiten. 2. überprüfen Sie die Werte über ISPresent oder If Present Security, um direkte Anrufe zu vermeiden, um Ausnahmen zu verursachen. 3.. Verwenden Sie Orelse und Orelseget, um Standardwerte bereitzustellen, oder verwenden Sie Orelsethrow, um eine benutzerdefinierte Ausnahme auszulegen. 4. Konvertieren oder Filterwerte durch Karten- und Filterkettenvorg?nge, um die Code -Lesbarkeit und -Robustheit zu verbessern.

Verwenden Sie die GetClass () -Methode, um die Laufzeitklasse des Objekts wie Str.GetClass () zu erhalten, um das Klassenobjekt zurückzugeben. Für Typen k?nnen Sie die Syntax der String.Class -Syntax direkt verwenden. Die Klassenklasse enth?lt Methoden wie GetName (), GetImplename (), um Klasseninformationen wie num.getClass () zu erhalten. GetImplename (), um Ganzzahl auszugeben.

Atwo-dimensionalarrayinjavaisanArrayofArrays, deklariert mitWobrackets, gleichen [] [] matrix, und canbeinitialisiert mit dem ValuenoususingNew; Forexample, int [] [] matrix = {{1,2}, {3,4}}}; erstelltesa3x2matrix.

ThecurrentworkingDirectoryinjavacanbeoBtainedusingStem.getProperty ("user.dir"), whitReturnStheAbSolutepathwheretheProgramwashaslaunted; alternativ, paths.get

AsingletonClassinjavaensuresurlyoneinstancexists ThroughoutanApplication'slifecycleByusingAprivateConstructor, AprivatestaticInstance und ApublicstaticgetInstance () Methode;

ToimplementAcustomComparatorinjava, CreateAclassorlambdatoverridestheComparemethodtodeFinesortinglogic.forexample, withApersonClassHavavingNameandagefields, DecleleAgeComparatorImplementingComparatorandoverridecometosortosortosortosortosortosortosortosortosortoStintEinte.comPareger

GenericSinjavaprovidecompile-TimetypeSafetyandeliminateneedForcastingByaloklulenclasses, Schnittstellen und Methodstooperattypeparameter;

Caches und Cookies k?nnen für bestimmte Websites gereinigt werden, um die UC -Browser -Seite zu beheben, um Ausnahmen zu laden. 1. Gehen Sie zu Einstellungen → Datenschutz und Sicherheit → Website -Datenverwaltung, suchen Sie nach der Zielwebsite und l?schen Sie ihre Daten. 2. Verwenden Sie den unsichtbaren Browsermodus, um auf die Problem -Website zuzugreifen, um die Datenbindung zu vermeiden. 3. Setzen Sie den Speicher zurück, indem Sie die Website -Berechtigungen deaktivieren und aktivieren, und erzwingen Sie den alten Cache.
