2
TIntArrayList list = new TIntArrayList();
final TIntArrayList tempList = new TIntArrayList();
list.add(10086);
list.add(12345);
list.add(1989);
list.forEach(new TIntProcedure() {
    @Override
    public boolean execute(int i) {
        if (i > 10086) {
            tempList.add(i);
        }
        return true;
    }
});

intellij を使用すると、tempList を final で宣言するように求められます。tempList を final で宣言する必要があるのはなぜですか?

4

2 に答える 2

2

「tempList」のスコープはメソッド内です。メソッドが終了すると、「tempList」は最終的に失われます。ただし、作成した匿名クラスはまだヒープ上にある可能性があり、後で参照できます。final にすることで、匿名クラスが引き続き期待どおりに動作することが保証されます。

于 2014-10-24T03:24:16.667 に答える