As expressões lambda permitem escrever funções anônimas (sem nome) de forma concisa, sendo usadas principalmente para implementar interfaces funcionais — interfaces com apenas um método abstrato.

💡 Lambdas tornam o código mais simples, direto e compatível com o estilo funcional introduzido no Java 8.


🧩 1. Interfaces Funcionais

Uma interface funcional define um único comportamento, que pode ser representado por uma lambda.

@FunctionalInterface
public interface Acao {
    int executar(int valor);
}

📌 No tema ninja (leve): a interface é como um “estilo de técnica”, e o método representa a execução da habilidade.


🌀 2. Sem Lambda — Classe Anônima

Antes do Java 8, seria assim:

Acao multiplicar = new Acao() {
    @Override
    public int executar(int valor) {
        return valor * 2;
    }
};

🔸 Funciona, mas é verboso, repetitivo e pouco elegante.


3. Com Lambda — Versão Simplificada

Acao multiplicar = v -> v * 2;

✔ Sem nome de classe

✔ Sem boilerplate

✔ Código mais limpo e expressivo

🧠 Sintaxe Geral

(parâmetros) -> expressão
(parâmetros) -> { bloco de código }