Como o Java8 foi lançado recentemente e suas novas expressões lambda parecem ser muito legais, eu queria saber se isso significa o fim das classes Anonymous com as quais estávamos tão acostumados.
Estive pesquisando um pouco sobre isso e encontrei alguns exemplos interessantes de como as expressões Lambda substituirão sistematicamente essas classes, como o método de classificação da Coleção, que costumava obter uma instância Anônima de Comparator para realizar a classificação:
Collections.sort(personList, new Comparator<Person>(){
public int compare(Person p1, Person p2){
return p1.firstName.compareTo(p2.firstName);
}
});
Agora pode ser feito usando Lambdas:
Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));
E parece surpreendentemente conciso. Portanto, minha pergunta é: há algum motivo para continuar usando essas classes em Java8 em vez de Lambdas?
EDITAR
Mesma pergunta, mas na direção oposta, quais são os benefícios de usar Lambdas em vez de classes anônimas, uma vez que Lambdas só podem ser usados com interfaces de método único, esse novo recurso é apenas um atalho usado em poucos casos ou é realmente útil?
Comparator.comparing(Person::getFirstName)
se getFirstName()
seria um método que retorna firstName
.