Zusammenfassung der Ressource
Generics
- Basic-Theory
- Code wird wiederverwendbarer - generischer
- Können bei Methoden, Interfaces und Klassen verwendet werden
- Werden in Grossbuchstaben beschrieben - egal welcher.
- E für Entity T
für Type K für
Key V für Value
- Wenn ein Platzhalter nicht ausreicht:
- public class KlassMitMehrerenPlatzhaltern<A, B, C, D>
- OHNE Generics ist erst zur Laufzeiit bekannt, welchen Typ "inhalt" hat,
MIT Generics ist diese Info bereits zur Compilezeit bekannt
- Wildcard
- ?
- Ich kann beschreiben welche generischen
Typen (zum Beispiel in einer Liste) erlaubt
sind erlaubt
- extends = obere schranke
super = untere schranke
- erlaubt bei Istanziierung und Definition
- nur bei der Instanziierung erlaubt, nicht
bei der Definition von Generics
- List<? extends Tier>
- Outcome: Etwas vom Typ Tier
- Darf keine Tiere hinzufügen
- verhindern von inkonsistenten Daten
- Nach oben beschränkt
- public static void druckeNamen(List<? extends Tier> tiere){...}
- Wildcard-Operator -> ?
- gefolgt von extends
- schliesslich die obere Grenze Tier
- List<? super Tier>
- Darf Objekte vom Typ Tier hinzufügen
- Outcome: Etwas vom Typ Object
- Nach unten beschränkt
- public static void vermehrtEuch(List<? super Tier> tiere {...}
- Wildcard-Operator
- gefolgt von super
- schliesslich die untere Grenze
- Basic-Code
- <E> = formaler Typ, Platzhalter
für Klasse oder Interface
- Als Parametertyp im Konstruktor
- Als Rückgabetyp von Methoden
- Der Platzhalter als Referenzytp innerhalb Klasse
- Als Parametertyp in Methoden