ExpertiDict

Java · Essencial · Português · Técnico

expressão lambda

/espɾeˈsɐ̃w ˈlɐ̃bdɐ/substantivo

Função anônima escrita como (parâmetros) -> corpo, usada onde Java espera uma interface funcional. Reduz o código das antigas classes anônimas.

Onde usar

Aparece em Comparator, Runnable e streams. O erro 'local variables referenced from a lambda must be final or effectively final' é muito comum.

Em código

Runnable r = () -> System.out.println("oi");
Function<Integer, Integer> dobro = n -> n * 2;
BiFunction<Integer, Integer, Integer> soma =
    (a, b) -> a + b;
r.run();
dobro.apply(4); // 8

Exemplos

Troca essa classe anônima por uma expressão lambda.

A lambda não compila porque a variável não é efetivamente final.

Cuidado

A lambda não é um tipo função independente: ela sempre assume o tipo de uma interface funcional do contexto.

Sinônimos

lambda, função anônima

Antônimos

classe anônima

Origem

Do cálculo lambda, criado por Alonzo Church nos anos 1930.

Veja também

Todos os termos de Java