从 java 中的内部 class 访问变量

Accesing variable from an inner class in java

我想通过 mouseClicked 方法访问 i。谁能帮我解决这个问题?

这是我的代码片段 -

for (int i = 0; i < 9; i++) {
        JLabel jl = new JLabel(String.valueOf(i));
        jl.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {

                        addAnEventToLabel(i); //Error 1
            }
        });
    }

错误 1 ​​- 从内部 class 引用的局部变量必须是最终的或实际上是最终的(显示在 IDE 中) 但没有运行时或编译时异常。

你应该可以做到:

for (int i = 0; i < 9; i++) {
    final int tmpI = i;
    JLabel jl = new JLabel(String.valueOf(i));
    jl.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent evt) {

                    addAnEventToLabel(tmpI);
        }
    });
}