DEV Community

FUNDAMENTOS JAVA
FUNDAMENTOS JAVA

Posted on

2

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)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Explore a trove of insights in this engaging article, celebrated within our welcoming DEV Community. Developers from every background are invited to join and enhance our shared wisdom.

A genuine "thank you" can truly uplift someone’s day. Feel free to express your gratitude in the comments below!

On DEV, our collective exchange of knowledge lightens the road ahead and strengthens our community bonds. Found something valuable here? A small thank you to the author can make a big difference.

Okay