第9回 無名クラスは無名関数のように外側の変数を参照できるか?

リードオンリーならば参照可能。
つまり、無名クラスから値の書き換えは不可。
finalはコンパイラが値を置換するので、参照とは言いがたい。


例:

abstract class Hoge{
  public abstract int execute();
}

public class Main {
  public static void main(String args[]) {
    final int i     = 10;             // finalであることが重要
    Hoge hoge = new Hoge(){
                  public int execute(){ return i; }
                };
                
    System.out.println( hoge.execute() );
    
  }
}


結果:

10


参考:
クロージャ - Wikipedia