DEV Community

FUNDAMENTOS JAVA
FUNDAMENTOS JAVA

Posted on

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<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)