Java Videotraining Werbung

Videotraining Spring 3 Boot Werbung

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

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 von EssentialJob oder NonEssentialJob aufnehmen kann. Überlege, wie der Typ T beschaffen sein muss. Es reicht, wenn apply(…​) den Namen der Aufzählung nutzen kann.