Junior
O que são expressões lambda em Java?
sobes.tech IA
Resposta da IA
Uma expressão lambda é uma forma concisa de função anónima, que implementa os métodos de uma interface funcional.
Estrutura: (parâmetros) -> { corpo da expressão }.
| Parte | Descrição | Exemplos |
|---|---|---|
parâmetros |
Lista de parâmetros, pode estar vazia. Os tipos podem não estar indicados (são inferidos). | ()<br>x<br>(x, y)<br>(int x, String y) |
-> |
Operador seta (arrow operator). Separa os parâmetros do corpo. | -> |
corpo da expressão |
Corpo da lambda. Pode ser uma expressão ou um bloco de código. | x * x<br>{ System.out.println(x); } |
Exemplos de utilização:
-
Implementação de interfaces funcionais:
import java.util.function.Consumer; // Antes, implementação tradicional com classe anónima Consumer<String> consumerAnon = new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }; consumerAnon.accept("Classe anónima tradicional"); // Com utilização de expressão lambda Consumer<String> consumerLambda = s -> System.out.println(s); consumerLambda.accept("Expressão lambda"); -
Trabalhando com API Streams:
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // Filtrar números pares com lambda List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println(evenNumbers); // Saída: [2, 4] // Transformar números em seus quadrados List<Integer> squares = numbers.stream() .map(n -> n * n) .collect(Collectors.toList()); System.out.println(squares); // Saída: [1, 4, 9, 16, 25]
Vantagens:
- Redução de código em comparação com classes anónimas.
- Aumento da legibilidade para operações simples.
- Facilidade de uso com API Streams e outras APIs orientadas à programação funcional.