Generics an Klassen

Intermediate Algorithmen und Datenstrukturen Deutsch
Also available: English
Created by Best · 16.08.2026 at 09:13 UTC

Generics parametrisieren Typen: Box speichert T. Der Compiler prüft Zuweisungen und entfernt Casts. Zur Laufzeit existiert nach Type Erasure oft nur noch die Raw-Form.

Vorteil: weniger ClassCastException, klarere APIs. Einschränkung: keine new T[], keine instanceof T mit Typparameter.

Beispiel: List akzeptiert add("a"), aber nicht add(Integer).

Wildcard Lesen Schreiben
? extends T als T meist verboten
? super T als Object T einfügen
## Wo gebraucht

Typisierte Repositories, Event-Bus-Handler, Collection-APIs. Generics verschieben Klassenfehler auf die Compile-Zeit und sind Voraussetzung für lesbare Bibliotheksgrenzen in grossen Codebases.

Vertiefung

Ein Typparameter beschreibt eine Familie von Klassen mit gleicher Struktur, aber unterschiedlichen Elementtypen. Der Compiler prüft Einfügen und Entnehmen zusammenhängend, sodass viele Laufzeitumwandlungen entfallen.

Box<Integer> ist kein Untertyp von Box<Number>. Diese Invarianz verhindert, dass über eine vermeintliche Box<Number> etwa ein Double in eine tatsächlich ganzzahlige Box geschrieben wird.

Statische Member gehören zur Klasse und nicht zu einer konkreten Typargument-Ausprägung. Sie können den Typparameter der Instanzklasse daher nicht unmittelbar verwenden. Methoden können stattdessen eigene Typparameter deklarieren.

Schwierigkeitsstufen

  1. Einen Klassen-Typparameter an Feldern und Methoden einsetzen.
  2. Invarianz anhand eines unsicheren Schreibzugriffs begründen.
  3. Klassen- und Methoden-Typparameter unterscheiden.

Fallstricke

Ein einzelner Buchstabe ist kein konkreter Laufzeittyp. Ausserdem beseitigt ein ungeprüfter Cast nur die Compilerkontrolle, nicht die Möglichkeit eines späteren Typfehlers.

University approvals: 0
Tasks
Question 1

Was ist der Hauptgewinn von List gegenüber einer Raw List?

Question 2

Warum ist Box<Integer> kein Untertyp von Box<Number>?

Question 3

Vervollständige die generische Klasse Box mit set und get.

Hint

Der Typparameter T kann wie ein normaler Referenztyp für Felder, Parameter und Rückgabewerte verwendet werden.

Starter code is prefilled; replace TODO blocks with your solution.
1 test case will be used for grading
Run checks runtime behavior only. Final correctness is evaluated when you submit.
Card Info
  • Topic: Algorithmen und Datenstrukturen
  • Difficulty: Intermediate
  • Completed: 0 users
Creator
Best
Best
BestBuddy