Sobes.tech
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:

  1. 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();  
    
  2. 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"));  
    
  3. 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)  
    
  4. Execução diferida: O código dentro da expressão lambda é executado apenas quando se chama o método funcional.
  5. 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.