DEV Community

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

Posted on • Edited on

6 1

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

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay