Java · Essencial · Português · Técnico
expressão lambda
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); // 8Exemplos
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.