OO: Generics

Typisierung von Container

Map<String, Set<String>> map = new HashMap<>();

<> heißt Diamantoperator

Gebräuchlich Abkürzungen

T Typ

E Element

Typeinschränkungen

class NewClass<T extends Base & Interface1>

(nach dem & sind nur Interfaces erlaubt)

public static void statMeth(final List<? extends Base> elements)

Äquivalent zu

public static <T extends Base> void statMeth(final List<T> elements

Einschränkungen

Der Compiler löscht die Typen und ersetzt sie durch Objects + casts. Damit sind bei Typ<T> zwei Objekt mit unterschiedlichen Ts typgleich.

Klassen dürfen keine Attribute enthalten, die statisch und generisch sind.

Generische Arrays sind nicht erlaubt:

Pair<T1, T2>

=> p1, p2- Objekte können erzeugt werden

Pair<T1, T2>[] pairs = {p1,p2}

=> Fehler, da Arrays Laufzeit-Infos auswerten. Hier werden diese aber gelöscht.

@SuppressedWarning („unchecked“) bei Generics nur im äußersten Notfall einschalten

Schreibe einen Kommentar