Generics in Java ermöglichen die Typparametrisierung von Klassen, Schnittstellen und Methoden. Sie bieten stärkere Typsicherheit und eliminieren das Bedürfnis für explizite Typumwandlungen.
public class Box<T> {
private T content;
public void set(T content) {
this.content = content;
}
public T get() {
return content;
}
}
Es ist möglich, Typen für Generics einzuschränken.
public class NumericBox<T extends Number> {
private T content;
// ...
}
Wildcards ermöglichen die Flexibilität in der Verwendung generischer Typen.
public void processBoxes(List<? extends Number> boxes) {
// ...
}
Methoden können unabhängig von Klassen generisch sein.
public <T> void printArray(T[] array) {
for (T element : array) {
System.out.print(element + " ");
}
System.out.println();
}
Der Compiler kann oft den richtigen generischen Typ ableiten.
Box<Integer> integerBox = new Box<>();
Generics sind ein leistungsstarkes Feature, das die Qualität und Wartbarkeit des Codes erheblich verbessern kann. Sie sind in der modernen Java-Entwicklung allgegenwärtig und ermöglichen die Erstellung robuster und flexibler Softwarekomponenten.