Sobes.tech
Junior — Middle

Uma expressão lambda pode aceder a uma variável declarada dentro do método em que está definida?

sobes.tech IA

Resposta da IA

A expressão lambda em Java só pode aceder a uma variável local declarada no método se essa variável for efetivamente final. Isto significa que, após a inicialização, o valor da variável não muda.

Exemplo:

public void exemplo() {
    int numero = 10; // variável efetivamente final
    Runnable r = () -> System.out.println(numero);
    r.run();
}

Se tentar alterar numero após definir a lambda, o compilador irá gerar um erro.

Esta restrição está relacionada com o facto de a lambda poder ser executada mais tarde, e para evitar problemas com estados modificáveis, o Java exige que essas variáveis sejam imutáveis.