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
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
- 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
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;
}
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));
}
}
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)