クロージャ?
Javaでクロージャのようなものを実現すると、こんな感じになるか。
interface Closure { int call(int value); } class Local { public static void main(String[] args) { final int j = 3; Closure c = new Closure() { public int call(int k) { return j * k; } }; for (int i = 1; i < 4; i++) { System.out.println("i = " + i + " : i * j = " + c.call(i)); } } }
外側のメソッドローカル変数(j)を無名クラスのメソッドから参照するには、finalをつけなければならない。