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.