DEV Community

Cover image for Expressão Lambda - Parte III (Sintaxe)
Carolina Dias Fonseca
Carolina Dias Fonseca

Posted on • Edited on

Expressão Lambda - Parte III (Sintaxe)

Para finalizar a série sobre Lambdas do Java, vamos seguir com a tradução do trecho sobre a sintaxe de uma expressão lambda.

Uma expressão lambda em Java, consiste do seguinte:

  • Uma lista separada por vírgula de parâmetros formais envolvidos por parênteses. No caso, é p
(p) -> p.getGenero() == Pessoa.Genero.MASCULINO 
    && p.getIdade() >= 18
    && p.getIdade() <= 25
Enter fullscreen mode Exit fullscreen mode

Entretanto, você também pode omitir o parênteses caso se tenha somente um parâmetro ou usar apenas o parênteses sem o parâmetro. Exemplos:

//Somente o parênteses
() -> p.getGenero() == Pessoa.Genero.MASCULINO 
    && p.getIdade() >= 18
    && p.getIdade() <= 25

//Somente o parâmentro
p -> p.getGenero() == Pessoa.Genero.MASCULINO 
    && p.getIdade() >= 18
    && p.getIdade() <= 25
Enter fullscreen mode Exit fullscreen mode
  • A seta, →
  • Um corpo que consiste de uma expressão única ou um bloco de declaração.
//body
p.getGenero() == Pessoa.Genero.MASCULINO 
    && p.getIdade() >= 18
    && p.getIdade() <= 25
Enter fullscreen mode Exit fullscreen mode

Se você declara uma expressão única, o JRE avalia a expressão e retorna o valor dela, em contra partida, você também pode utilizar uma declaração de retorno:

p -> {
return p.getGenero() == Pessoa.Genero.MASCULINO 
    && p.getIdade() >= 18
    && p.getIdade() <= 25;
}
Enter fullscreen mode Exit fullscreen mode

Uma declaração de retorno não é uma expressão, numa expressão lambda você deve envolver a declaração com {}.

Note que a expressão lambda parece muito com a declaração de um método, inclusive, você pode considerar a expressão lambda como um método anônimo - método sem nome.

Exemplo:

public class Calculadora {

    interface IntegerMath {
        int operacao(int a, int b);   
    }

    public int operadorBinario(int a, int b, IntegerMath op) {
        return op.operacao(a, b);
    }

    public static void main(String... args) {

        Calculadora meuApp = new Calculadora();

//Uso da expressão lambda como função anônima
        IntegerMath adicao = (a, b) -> a + b;
        IntegerMath subtracao = (a, b) -> a - b;
        System.out.println("40 + 2 = " +
            meuApp.operadorBinario(40, 2, adicao));
        System.out.println("20 - 10 = " +
            meuApp.operadorBinario(20, 10, subtracao));    
    }
}
Enter fullscreen mode Exit fullscreen mode

Com isso, fechamos o assunto de expressão Lambda em Java :) no próximo post, veremos a tradução sobre Interface Funcional que foi mencionada na parte 2

Fonte: Documentação Oracle

Top comments (0)