Olá,
No livro da certificação, diz que uma Inner Class declarada dentro de um método não pode acessar uma variável local do método, por que esta variável tem escopo somente dentro do método, ou seja na pilha, e uma instância da Inner Class pode ser passado como parâmetro para outro método e ainda precisar residir no heap, mas se esta variável local no método for final, compila sem problemas, eu não entendi isto, pois acredito eu que a variável final apenas não permite que sua referência seja alterada mas ao terminar o método ela também se perde, ou seja inda estará na pilha, alguém pode me explicar por que uma variável com o modificador final aceita a compilação?
public void go(){
final String test = "teste";
class Inner{
public void testes(){
System.out.println(test);
}
}
Inner i = new Inner();
i.testes();
}