Niedrig
Generische Klassen
Typparameter, Templates – vorwiegend in Sprachvergleichen.
Warum Priorität „Niedrig"? Selten oder als Randthema (unter 40%). Überblick reicht meist.
Lernziele
- Typparameter und generische Klassen/Methoden nutzen
- Bounded Generics und Wildcards einordnen
- Vorteile (Typsicherheit, Wiederverwendung) und Grenzen (Type Erasure) benennen
Grundidee
- Typparameter
<T>macht Klasse/Methode unabhängig vom konkreten Typ. - Typsicherheit zur Compile-Zeit – unsichere Casts entfallen.
- Bounded Generics:
<T extends Number>schränkt auf Number und Unterklassen ein. - Wildcards (Java):
? extends T(Lesen),? super T(Schreiben) – PECS-Regel. - Type Erasure in Java: Typinfo wird zur Laufzeit entfernt –
new T()geht nicht.
Beispiel
javaGenerische Klasse + bounded Methode
public class Box<T> {
private T inhalt;
public void setzen(T t) { this.inhalt = t; }
public T holen() { return inhalt; }
}
Box<String> b = new Box<>();
b.setzen("Hallo");
public static <T extends Number> double summe(List<T> xs) {
double s = 0;
for (T x : xs) s += x.doubleValue();
return s;
}TypeScript-Pendant:
ts
class Box<T> {
constructor(public inhalt: T) {}
}
const b = new Box<string>("Hallo");Übungen
Eine AntwortWofür steht `<T extends Number>`?
Eine AntwortWas ist der Hauptvorteil von Generics?