Diamant-Operator mit anonymen Klassen
Der Diamant-Operator funktioniert jetzt auch mit anonymen Klassen.
Code-Vergleich
✕ Java 7/8
Map<String, List<String>> map =
new HashMap<String, List<String>>();
// anonymous class: no diamond
Predicate<String> p =
new Predicate<String>() {
public boolean test(String s) {..}
};
✓ Java 9+
Map<String, List<String>> map =
new HashMap<>();
// Java 9: diamond with anonymous classes
Predicate<String> p =
new Predicate<>() {
public boolean test(String s) {..}
};
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Konsistente Regeln
Der Diamant funktioniert überall – bei Konstruktoren und anonymen Klassen gleichermaßen.
Weniger Redundanz
Typargumente werden einmal links angegeben und nie wiederholt.
DRY-Prinzip
Der Compiler kennt den Typ bereits – warum ihn zweimal schreiben?
Alter Ansatz
Typargumente wiederholen
Moderner Ansatz
Diamant <>
Seit JDK
9
Schwierigkeitsgrad
Einsteiger
JDK-Unterstützung
Diamant-Operator mit anonymen Klassen
Verfügbar
Diamant mit anonymen Klassen seit JDK 9 (Sept. 2017).
Wie es funktioniert
Java 7 führte <> ein, aber es funktionierte nicht mit anonymen inneren Klassen. Java 9 hat dies behoben, sodass Typargumente auf der rechten Seite nie wiederholt werden müssen.
Zugehörige Dokumentation