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)