Как можно использовать нефинальные поля в классе анонимного класса, если их значение может измениться?

Я задавал этот вопрос раньше, но я неполучить правильный ответ.

Как можно использовать нефинальные поля в классе анонимного класса, если их значение может измениться?

class Foo{
    private int i;
    void bar(){
        i = 10
        Runnable runnable = new Runnable (){
            public void run (){
                System.out.println(i); //works fine
            }//end method run
        }//end Runnable
    }//end method bar
}//end class Foo 

Если локальные переменные, которые используются внутри анонимного класса, должны бытьfinal чтобы компилятор включил их значения в код анонимного класса следующим образом:

До:

public class Access1 {
  public void f() {
    final int i = 3;
    Runnable runnable = new Runnable() {
        public void run() {
            System.out.println(i);
        }//end method run
    };//end anonymous class
  }//end method f
}//end class Access1

После:

public class Access1 {
    public Access1() {}//end constructor

    public void f() {
        Access1$1 access1$1 = new Access1$1(this);
    }//end method f
}//end class Access1

А также

class Access1$1 implements Runnable {
    Access1$1(Access1 access1) {
        this$0 = access1;
    }//end constructor

    public void run() {
        System.out.println(3);
    }//end method run
    private final Access1 this$0;
}//end class Access1$1

затемкак компилятор может встроить значение неконечного поля?

Ответы на вопрос(1)

Ваш ответ на вопрос