Dato che Java8 è stato recentemente rilasciato e le sue nuovissime espressioni lambda sembrano davvero interessanti, mi chiedevo se questo significasse la fine delle classi Anonymous a cui eravamo così abituati.
Ho cercato un po 'su questo e ho trovato alcuni esempi interessanti su come le espressioni Lambda sostituiranno sistematicamente quelle classi, come il metodo di ordinamento Collection, che utilizzava per ottenere un'istanza anonima di Comparator per eseguire l'ordinamento:
Collections.sort(personList, new Comparator<Person>(){
public int compare(Person p1, Person p2){
return p1.firstName.compareTo(p2.firstName);
}
});
Ora può essere fatto usando Lambdas:
Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));
E sembra sorprendentemente conciso. Quindi la mia domanda è: c'è qualche motivo per continuare a utilizzare quelle classi in Java8 invece di Lambdas?
MODIFICARE
Stessa domanda ma nella direzione opposta, quali sono i vantaggi dell'utilizzo di Lambdas anziché di classi Anonymous, poiché Lambdas può essere utilizzato solo con interfacce a metodo singolo, questa nuova funzionalità è solo una scorciatoia utilizzata solo in pochi casi o è davvero utile?
Comparator.comparing(Person::getFirstName)
se getFirstName()
fosse un metodo di ritorno firstName
.