Expressões Lambda no Java
Foto de Luis P.
Por: Luis P.
14 de Janeiro de 2025

Expressões Lambda no Java

Simplificando a Programação Funcional

Java lambda

As expressões lambda, introduzidas no Java 8, revolucionaram a maneira como os desenvolvedores escrevem código funcional. Elas permitem que você trate funções como valores, reduzindo a quantidade de código necessário para implementar interfaces funcionais. Além de tornar o código mais conciso, as expressões lambda são fundamentais para trabalhar com APIs como a Stream API e o Java Collections Framework.

Neste artigo, exploraremos o conceito de expressões lambda, seus usos e como elas simplificam o desenvolvimento em Java.


O Que São Expressões Lambda?

Uma expressão lambda é uma maneira simplificada de implementar interfaces funcionais (interfaces com um único método abstrato). Elas permitem que você escreva código mais compacto e funcional ao passar comportamento como argumento para métodos.

Sintaxe Geral

(parametros) -> { corpo }
  • Parâmetros: A lista de argumentos que o método recebe.
  • Operador ->: Separa os parâmetros do corpo da expressão.
  • Corpo: O código a ser executado, que pode ser uma única linha ou um bloco de código.

Exemplo Simples

Sem lambda:

Runnable r = new Runnable() {
    @Override
    public void run() {
        System.out.println("Executando uma thread");
    }
};

Com lambda:

Runnable r = () -> System.out.println("Executando uma thread");

Principais Usos das Expressões Lambda

1. Reduzir Código Boilerplate

Elas eliminam a necessidade de criar classes anônimas para implementar interfaces funcionais.

Exemplo: Ordenando uma lista de strings. Sem lambda:

List<String> nomes = Arrays.asList("Ana", "Bruno", "Carlos");
Collections.sort(nomes, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        return o1.compareTo(o2);
    }
});

Com lambda:

List<String> nomes = Arrays.asList("Ana", "Bruno", "Carlos");
nomes.sort((o1, o2) -> o1.compareTo(o2));

2. Trabalhar com a Stream API

As expressões lambda são essenciais para a manipulação declarativa de coleções com Streams.

Exemplo: Filtrar e mapear uma lista.

List<String> nomes = Arrays.asList("Ana", "Bruno", "Carlos");
nomes.stream()
    .filter(nome -> nome.startsWith("A"))
    .map(String::toUpperCase)
    .forEach(System.out::println);

3. Callbacks e Manipulação de Eventos

Usando lambdas, você pode passar comportamentos como argumentos para métodos.

Exemplo: Criando um botão com ação.

Button button = new Button("Clique Aqui");
button.setOnAction(event -> System.out.println("Botão clicado!"));

Referências de Métodos e Construtores

As expressões lambda podem ser simplificadas ainda mais com referências de métodos e construtores, utilizando a sintaxe ::.

Exemplos de Referências

  1. Referência a Métodos Estáticos:
Consumer<Integer> printer = System.out::println;
printer.accept(10); // Imprime: 10
  1. Referência a Métodos de Instância:
List<String> nomes = Arrays.asList("Ana", "Bruno", "Carlos");
nomes.forEach(System.out::println);
  1. Referência a Construtores:
Supplier<List<String>> listSupplier = ArrayList::new;
List<String> lista = listSupplier.get();

Boas Práticas com Lambdas

  1. Use Lambdas Apenas para Interfaces Funcionais: Certifique-se de que a interface tem apenas um método abstrato.

  2. Prefira Referências de Métodos: Sempre que possível, substitua lambdas por referências de métodos para maior clareza.

  3. Evite Lambdas Muito Longos: Divida expressões complexas em métodos auxiliares para melhorar a legibilidade.

  4. Escolha Nomes Significativos para Parâmetros: Mesmo que não sejam obrigatórios, nomes claros ajudam a entender o propósito da expressão.

As expressões lambda trouxeram uma nova era de programação funcional ao Java, simplificando tarefas repetitivas e reduzindo a verbosidade do código. Com elas, é possível escrever programas mais elegantes, concisos e fáceis de manter. Aproveite as lambdas para transformar a maneira como você desenvolve seus aplicativos Java!

Luis P.
Luis P.
Boa Ventura / PB
Responde em 13 h e 46 min
Identidade verificada
1ª hora grátis
5,0
nota média
1
avaliação
R$ 40
por hora
Graduação: Licenciatura em Computação (UEPB - Universidade Estadual da Paraíba)
Java - Springboot, Java para Web, Testes em Java
Professor de informática, português e inglês. Formado em computação e letras inglês/português. Servidor público aprovado em 3 concursos.

Confira artigos similares

Aprenda sobre qualquer assunto