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<Usuario> 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<Usuario, String> 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). 
 

 
    
Top comments (0)