6 Method References
1 Expressões Lambda e Redução do Código Lambdas simplificam o uso de callbacks e interfaces funcionais, como ActionListener. O termo callback se refere a uma função que é passada como argumento para outra função/método e que será chamada em algum momento futuro, geralmente em resposta a um evento ou ação. Eliminam o problema vertical (muitas linhas para ações simples). 2 Tornando Todos os Usuários Moderadores Com lambda, podemos iterar e chamar um método para cada usuário: usuarios.forEach(u -> u.tornaModerador()); Isso pode ser simplificado usando method reference: usuarios.forEach(Usuario::tornaModerador); 3 Entendendo Method Reference A sintaxe é: Classe::método, sem parênteses. O método forEach espera um Consumer, e Usuario::tornaModerador se encaixa nesse tipo funcional. Consumer tornaModerador = Usuario::tornaModerador; usuarios.forEach(tornaModerador); 4 Vantagens do Method Reference Funciona como uma expressão lambda, mas é mais conciso. Não usa reflection, ou seja, não impacta a performance. Resolvido em tempo de compilação, sem overhead adicional. Comparando de uma forma ainda mais enxuta 1 Simplificando a Comparação com Method Reference Podemos ordenar uma lista de usuários usando Comparator.comparing com uma expressão lambda: usuarios.sort(Comparator.comparing(u -> u.getNome())); Isso pode ser simplificado usando method reference: usuarios.sort(Comparator.comparing(Usuario::getNome)); Arquivo: SimplificandoComparacao.java 2 Melhorando a Legibilidade com Import Estático Podemos tornar o código mais fluente e legível ao fazer um import estático de Comparator.comparing e extrair a função para uma variável: import static java.util.Comparator.comparing; Function byName = Usuario::getNome; usuarios.sort(comparing(byName)); 3 Vantagens da Abordagem Código mais enxuto e legível. Evita parênteses desnecessários no lambda. Melhor fluidez e clareza ao nomear a função de comparação (byName).

1 Expressões Lambda e Redução do Código
Lambdas simplificam o uso de callbacks e interfaces funcionais, como ActionListener.
O termo callback se refere a uma função que é passada como argumento para outra função/método e que será chamada em algum momento futuro, geralmente em resposta a um evento ou ação.
Eliminam o problema vertical (muitas linhas para ações simples).
2 Tornando Todos os Usuários Moderadores
- Com lambda, podemos iterar e chamar um método para cada usuário:
usuarios.forEach(u -> u.tornaModerador());
- Isso pode ser simplificado usando method reference:
usuarios.forEach(Usuario::tornaModerador);
3 Entendendo Method Reference
A sintaxe é: Classe::método, sem parênteses.
O método forEach espera um Consumer, e Usuario::tornaModerador se encaixa nesse tipo funcional.
Consumer
usuarios.forEach(tornaModerador);
4 Vantagens do Method Reference
Funciona como uma expressão lambda, mas é mais conciso.
Não usa reflection, ou seja, não impacta a performance.
Resolvido em tempo de compilação, sem overhead adicional.
Comparando de uma forma ainda mais enxuta
1 Simplificando a Comparação com Method Reference
- Podemos ordenar uma lista de usuários usando Comparator.comparing com uma expressão lambda:
usuarios.sort(Comparator.comparing(u -> u.getNome()));
- Isso pode ser simplificado usando method reference:
usuarios.sort(Comparator.comparing(Usuario::getNome));
Arquivo: SimplificandoComparacao.java
2 Melhorando a Legibilidade com Import Estático
- Podemos tornar o código mais fluente e legível ao fazer um import estático de Comparator.comparing e extrair a função para uma variável:
import static java.util.Comparator.comparing;
Function
usuarios.sort(comparing(byName));
3 Vantagens da Abordagem
Código mais enxuto e legível.
Evita parênteses desnecessários no lambda.
Melhor fluidez e clareza ao nomear a função de comparação (byName).