argius note

プログラミング関連

クロージャ?

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をつけなければならない。