DEV Community

FUNDAMENTOS JAVA
FUNDAMENTOS JAVA

Posted on

2 1 1 1 1

3.1 Outro exemplo: listeners

Interfaces funcionais são amplamente utilizadas em listeners de eventos. Antes do Java 8, era comum utilizar classes anônimas para implementar esses listeners. Um exemplo clássico é o uso de ActionListener para capturar o clique de um botão:

button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        System.out.println("evento do click acionado");
    }
});

Enter fullscreen mode Exit fullscreen mode

🔹 Transformando em Expressão Lambda
A interface ActionListener contém apenas um método abstrato (actionPerformed(ActionEvent e)), o que permite seu uso com expressões lambda:

button.addActionListener((event) -> {
    System.out.println("evento do click acionado");
});

Enter fullscreen mode Exit fullscreen mode

Podemos simplificar ainda mais, removendo os parênteses e as chaves:

button.addActionListener(event -> System.out.println("evento do click acionado"));

Enter fullscreen mode Exit fullscreen mode

Agora, a implementação do clique ocupa apenas uma linha de código, tornando o código mais legível e conciso!

🔹 Outras Interfaces Funcionais
Além de ActionListener, outras interfaces Java pré-Java 8 seguem o mesmo padrão de um único método abstrato, permitindo o uso de expressões lambda:

java.util.Comparator
java.util.concurrent.Callable
java.io.FileFilter
java.lang.Runnable (já visto anteriormente)

Mesmo sem modificações internas, todas essas interfaces podem ser chamadas oficialmente de interfaces funcionais a partir do Java 8. 🚀

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

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay