Puisque Java8 a été récemment publié et que ses toutes nouvelles expressions lambda ont l'air d'être vraiment cool, je me demandais si cela signifiait la disparition des classes Anonymous auxquelles nous étions si habitués.
J'ai fait des recherches un peu à ce sujet et j'ai trouvé quelques exemples intéressants sur la façon dont les expressions Lambda remplaceront systématiquement ces classes, comme la méthode de tri de Collection, qui permettait d'obtenir une instance anonyme de Comparator pour effectuer le tri:
Collections.sort(personList, new Comparator<Person>(){
public int compare(Person p1, Person p2){
return p1.firstName.compareTo(p2.firstName);
}
});
Maintenant, cela peut être fait en utilisant Lambdas:
Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));
Et semble étonnamment concis. Ma question est donc la suivante: y a-t-il une raison de continuer à utiliser ces classes en Java8 au lieu de Lambdas?
ÉDITER
Même question mais dans le sens inverse, quels sont les avantages d'utiliser Lambdas au lieu des classes Anonymes, puisque Lambdas ne peut être utilisé qu'avec des interfaces à méthode unique, cette nouvelle fonctionnalité n'est-elle qu'un raccourci utilisé uniquement dans quelques cas ou est-ce vraiment utile?
Comparator.comparing(Person::getFirstName)
si getFirstName()
serait une méthode retournant firstName
.