1. Generics
Generics ermöglichen eine Parametrisierung der Typen. Als sie in Java 5 eingezogen sind, war eines der größten Einsatzfelder die Datenstrukturen. Heute helfen Generics an vielen Stellen dem Compiler mehr Typinformationen zu geben und Fehler früh zur Compilezeit zu finden.
Voraussetzungen
Generisch deklarierte Typen einsetzen können
Eigene generische Datentyen programmieren können
Noch mehr Aufgaben findest du im Buch: ›Captain CiaoCiao erobert Java: Das Trainingsbuch für besseres Java. 300 Java-Workshops, Aufgaben und Übungen mit kommentierten Lösungen‹
1.1. Nutzen von Generischen Typen
Bevor wir eigene generische Typen deklarieren wollen wir uns den üblichen Fall anschauen: wir können die Deklaration aus der Javadoc lesen, und wissen, was in den spitzen Klammen eingetragen werden muss.
1.1.1. Wie heißt es so schön? ⭐⭐
Beschreibe alle Begriffe an einem kurzen Beispiel:
Generischer Typ
Typparameter
parametrisierter Typ
Typvariable
Typargument
Wildcard-Typ
Bounded Wildcard
upper bound, lower bound
generische Methode
unchecked Warnung
erasure
Type-Token
Wildcard capture
multiple bound
1.1.2. Aufzählungen vereinigen ⭐⭐⭐
Im ersten Entwurf einer Software wurde ein Aufzählungstyp EssentialJob
mit Berufen deklariert:
enum EssentialJob {
CAPTAIN, QUARTERMASTER, SAILINGMASTER, BOATSWAIN, SURGEON, CARPENTER, MASTER_GUNNER
}
Nun ist aufgefallen, dass Jobs fehlen. Allerdings kann in dem Projekt der Aufzählungstyp EssentialJob
nicht mehr nachträglich ergänzt werden. Es wird ein neuer Aufzählungstyp deklariert:
enum NonEssentialJob {
MATE, ABLE_BODIED_SAILOR, CABIN_BOY
}
In Java ist es nicht möglich, dass ein enum
von einem anderem enum
erbt. Wohl kann aber über eine Schnittstelle eine gewisse Gemeinsamkeit geschaffen werden.
Aufgabe:
Schaffe über eine gemeinsame Schnittstelle für die Aufzählungstypen eine Möglichkeit, eine eigene
apply(T job)
Methode zu deklarieren, die Aufzählungen entweder vonEssentialJob
oderNonEssentialJob
aufnehmen kann. Überlege, wie der TypT
beschaffen sein muss. Es reicht, wennapply(…)
den Namen der Aufzählung nutzen kann.
Noch mehr Aufgaben findest du im Buch: ›Captain CiaoCiao erobert Java: Das Trainingsbuch für besseres Java. 300 Java-Workshops, Aufgaben und Übungen mit kommentierten Lösungen‹