java - 如何在 ActionListener 中初始化局部变量? - java

标签 java initialization actionlistener local-variables

如果我想在 ActionListener 中初始化局部变量,则会收到此错误:

Local variable word defined in an enclosing scope must be final or effectively final.

代码看起来像这样:

int number = 0;

anyButton.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent arg0) {

        //And here I get the error:
        number++;

    }
});

你知道怎么做吗?

最佳答案

您需要一个可变的线程安全变量,而不是原语。

考虑用包装类(可以是您自己的,也可以是标准的[例如AtomicInteger])或单元素数组替换该原语:

final AtomicInteger number = new AtomicInteger();
...
number.getAndIncrement();

关于java - 如何在 ActionListener 中初始化局部变量? - java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47314434/

相关文章:

java - 使用 Java Mac 获取 PID

Java参数多态示例

c++ - 声明为类字段而不是全局变量

C# 自动属性 ​​- += 后仍然为空?

java - 如何在JAVA中从一个点增大/缩小一个圆?

java - 如何让java编译器将变量名插入字符串

java - 在同一个java文件中使用两个类

java - 为什么静态字段初始化失败导致NoClassDefFoundError?

Java Swing : form with text fields

java - ActionListener JTextField Java