Middle
O que são expressões lambda em Java e que funcionalidades oferecem?
sobes.tech IA
Resposta da IA
A expressão lambda em Java é uma função anónima que não pertence a nenhuma classe e pode ser passada como objeto.
Sintaxe: (parâmetros) -> { corpo }
Possibilidades:
- Interface funcional: A expressão lambda pode ser atribuída a uma variável de tipo interface funcional (interface com um método abstrato único).
// Interface funcional @FunctionalInterface interface MyInterface { void myMethod(); } // Uso da expressão lambda MyInterface lambda = () -> System.out.println("Olá do lambda!"); lambda.myMethod(); - Simplificação do código: Substituem classes internas anónimas para implementar interfaces funcionais.
// Antes do Java 8 (classe anónima) Thread thread1 = new Thread(new Runnable() { @Override public void run() { System.out.println("Forma antiga"); } }); // Desde Java 8 (lambda) Thread thread2 = new Thread(() -> System.out.println("Forma lambda")); - Uso na API Stream: Integram-se com a API Stream para realizar operações sobre coleções.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.stream() .filter(name -> name.startsWith("A")) // Expressão lambda .forEach(System.out::println); // Referência de método (expressão lambda) - Execução diferida: O código dentro da expressão lambda é executado apenas quando se chama o método funcional.
- Escopo das variáveis: As expressões lambda podem capturar variáveis do escopo externo (as variáveis locais devem ser finais ou efetivamente finais).
| Vantagem | Descrição |
|---|---|
| Brevidade do código | Reduz a "verbosidade" em comparação com classes anónimas. |
| Melhor legibilidade | O código torna-se mais conciso e compreensível. |
| Processamento paralelo | É suportado pela API Stream para operações paralelas. |