Da Java8 kürzlich veröffentlicht wurde und seine brandneuen Lambda-Ausdrücke wirklich cool aussehen, habe ich mich gefragt, ob dies den Niedergang der anonymen Klassen bedeutet, an die wir so gewöhnt waren.
Ich habe ein wenig darüber recherchiert und einige coole Beispiele dafür gefunden, wie Lambda-Ausdrücke diese Klassen systematisch ersetzen, wie z. B. die Sortiermethode der Sammlung, mit der eine anonyme Instanz von Comparator die Sortierung durchführen konnte:
Collections.sort(personList, new Comparator<Person>(){
public int compare(Person p1, Person p2){
return p1.firstName.compareTo(p2.firstName);
}
});
Jetzt kann mit Lambdas gemacht werden:
Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));
Und sieht überraschend prägnant aus. Meine Frage ist also, gibt es einen Grund, diese Klassen weiterhin in Java8 anstelle von Lambdas zu verwenden?
BEARBEITEN
Dieselbe Frage, aber in umgekehrter Richtung: Welche Vorteile bietet die Verwendung von Lambdas anstelle von anonymen Klassen, da Lambdas nur mit Schnittstellen für einzelne Methoden verwendet werden kann. Ist diese neue Funktion nur eine Verknüpfung, die nur in wenigen Fällen verwendet wird, oder ist sie wirklich nützlich?
Comparator.comparing(Person::getFirstName)
, getFirstName()
dass: eine Methode zurückgegeben wird firstName
.