Dado que Java8 se lanzó recientemente y sus nuevas expresiones lambda parecen ser realmente geniales, me preguntaba si esto significaría la desaparición de las clases Anónimas a las que estábamos tan acostumbrados.
He estado investigando un poco sobre esto y encontré algunos ejemplos interesantes sobre cómo las expresiones Lambda reemplazarán sistemáticamente esas clases, como el método de ordenación de Collection, que solía obtener una instancia anónima de Comparator para realizar la ordenación:
Collections.sort(personList, new Comparator<Person>(){
public int compare(Person p1, Person p2){
return p1.firstName.compareTo(p2.firstName);
}
});
Ahora se puede hacer usando Lambdas:
Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));
Y parece sorprendentemente conciso. Entonces, mi pregunta es, ¿hay alguna razón para seguir usando esas clases en Java8 en lugar de Lambdas?
EDITAR
La misma pregunta pero en la dirección opuesta, ¿cuáles son los beneficios de usar Lambdas en lugar de clases anónimas, ya que Lambdas solo se puede usar con interfaces de un solo método, esta nueva característica es solo un acceso directo solo se usa en pocos casos o es realmente útil?
Comparator.comparing(Person::getFirstName)
si getFirstName()
sería un método que regresa firstName
.