Bounded Wildcards lesen

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

Wildcards: List<? extends Number> ist eine Liste unbekannten Number-Subtyps (Producer). Man darf lesen als Number, aber nicht beliebig schreiben (ausser null).

List<? super Integer> ist Consumer: man darf Integer schreiben, Lesen liefert Object.

Merksatz PECS: producer extends, consumer super.

Beispiel: sum(List<? extends Number>) addiert Zahlen aus Listen von Integer oder Double.

$$\mathtt{List\lt ?\ super\ Integer\gt }$$

Wildcard add(Integer)
List<? super Integer> typsicher
List<? extends Integer> vom Compiler abgelehnt
## Wo gebraucht

PECS in Bibliotheksmethoden (addAll, Producer/Consumer von Collections). Framework-Code (Spring, Guava-ähnlich) steckt voller ? extends / ? super; Lesen der Signatur entscheidet, ob Einfügen oder nur Lesen erlaubt ist.

Vertiefung

Ein oberer Wildcard-Grenzwert beschreibt eine Quelle unbekannten, aber hinreichend speziellen Typs. Werte können sicher als Obertyp gelesen werden, doch Schreiben ist ausser null nicht möglich, weil der konkrete Untertyp unbekannt bleibt.

Ein unterer Grenzwert beschreibt dagegen ein Ziel, das Werte eines bestimmten Typs aufnehmen kann. Beim Lesen ist nur Object sicher. Diese Asymmetrie wird oft als Producer-extends, Consumer-super zusammengefasst.

Wildcards drücken Beziehungen zwischen Aufrufen aus, ohne einen Typnamen mehrfach zu binden. Wenn Ein- und Ausgabe denselben unbekannten Typ teilen müssen, ist ein benannter Methoden-Typparameter meist präziser.

Schwierigkeitsstufen

  1. Sichere Lese- und Schreiboperationen bestimmen.
  2. Oberen und unteren Grenzwert nach Datenfluss wählen.
  3. Wildcard und benannten Methoden-Typparameter abgrenzen.

Fallstricke

Die Grenze bezeichnet nicht den exakten Elementtyp. Bei ? extends Number darf deshalb kein beliebiges Number eingefügt werden.

University approvals: 0
Tasks
Question 1

Welche Operation ist auf List<? extends Number> typsicher üblich?

Question 2

Welche Operation ist bei List<? extends Number> typsicher?

Question 3

Gib das erste Element einer Liste beliebiger Number-Untertypen zurück.

Hint

Aus List<? extends Number> lassen sich Werte als Number lesen. Das erste Element liefert list.get(0).

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