Von anonymen Klassen zu Lambdas und Methodenreferenzen
Anonyme Klassen mit einer einzigen Methode durch prägnante Lambdas und Methodenreferenzen ersetzen.
Code-Vergleich
✕ Anonymous class
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
save(event);
}
});
✓ Java 8+
button.addActionListener(this::save);
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Weniger Boilerplate
Die Klassendeklaration und das Überschreiben der Methode entfallen.
Bessere Lesbarkeit
Lenkt die Aufmerksamkeit auf die ausgeführte Operation.
Weiterhin typsicher
Der Compiler prüft die Signatur des Zielfunktionsinterfaces.
Alter Ansatz
Anonyme Klasse
Moderner Ansatz
Methodenreferenz
Seit JDK
8
Schwierigkeitsgrad
Einsteiger
JDK-Unterstützung
Von anonymen Klassen zu Lambdas und Methodenreferenzen
Verfügbar
Verfügbar seit JDK 8 (März 2014).
Wie es funktioniert
Funktionale Interfaces können mit Lambdas oder Methodenreferenzen implementiert werden. Dadurch entfällt der Verwaltungsaufwand anonymer Klassen, während die statische Typisierung und derselbe Callback-Vertrag erhalten bleiben.
Zugehörige Dokumentation
Beweis