Generics sind eine Möglichkeit, typsichere Klassen und Methoden zu erstellen, die auf verschiedene Objekttypen angewendet werden können, um Typfehler zur Kompilierungszeit und nicht zur Laufzeit abzufangen.
Es wird in Version 5.2 eingeführt
öffentliche Klasse GenericClass{private final T item; public GenericClass(T item) {this.item = item; } public T getItem() {return item; } }
private staticvoid printItem(T item) {System.out.println(item.toString()); }
Es wird verwendet, um bestimmte Typen oder deren Untertypen einzuschränken oder an sie zu binden.
Dadurch können wir Methoden begrenzter Klassen oder Schnittstellen aufrufen.
private staticdouble add(T numOne, T numTwo) {return numOne.doubleValue() + numTwo.doubleValue(); }
Es handelt sich um eine Funktion, die es dem Compiler ermöglicht, den Typ der generischen Methode oder des Konstruktorparameters automatisch zu bestimmen.
Listlist = new ArrayList<>();
Es handelt sich um ein >
-Symbol, das zur Darstellung eines Arguments unbekannten Typs verwendet wird.
private static void printItemsInList(List> list) {for (Object item : list) {System.out.println(item); } }
Es wird verwendet, um anzugeben, dass das Typargument ein Untertyp einer bestimmten Klasse oder Schnittstelle sein muss.
Es wird verwendet, um auf die Elemente zuzugreifen.
private static void printItemsInList(List erweitert Number> list) {for (Number number : list) {System.out.println(number); } }
Es wird verwendet, um anzugeben, dass das Typargument ein Supertyp einer bestimmten Klasse oder Schnittstelle sein muss.
Es wird verwendet, um die Elemente zu ändern.
Liste super Number> zahlen = new ArrayList<>();numbers.add(10);numbers.add(10.2);numbers.add(10.4f);System.out.println(numbers);
Typensicherheit
Datentypen werden zur Kompilierungszeit und nicht zur Laufzeit korrigiert, was den Code robuster und zuverlässiger macht.
Wiederverwendbarkeit des Codes
Schreiben Sie Klassen und Methoden, die mit mehreren Datentypen arbeiten können, was dazu beitragen kann, die Menge an Code zu reduzieren, die Sie schreiben müssen.
Leistung
Verbessern Sie die Leistung, indem Sie den Bedarf an Typumwandlungen reduzieren und den Mehraufwand für die Typprüfung zur Laufzeit vermeiden.
Geben Sie Löschung ein
Dabei handelt es sich um eine Schlüsselfunktion, bei der der generische Code zur Laufzeit gelöscht wird, was in bestimmten Situationen den Nutzen von Generika einschränken kann.
Begrenzte Unterstützung für primitive Typen
Generics in Java unterstützen primitive Typen wie int oder double nicht direkt. Stattdessen müssen Sie die entsprechenden Wrapper-Klassen verwenden, z. B. Integer oder Double. Dies kann weniger effizient sein als die direkte Arbeit mit primitiven Typen.
Komplexität
kann Code, der komplexe Typhierarchien und Platzhaltertypen verwendet, komplexer machen.