如果我想在ActionListener中初始化局部变量,我会收到此错误:
在封闭范围内定义的局部变量字必须是最终的或有效的最终字。
代码看起来像这样:
int number = 0;
anyButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
//And here I get the error:
number++;
}
});
你知道怎么做吗?
答案 0 :(得分:0)
您需要一个可变的线程安全变量,而不是一个原语。
考虑用包装类替换该原语(可以是您自己的,也可以是标准的[例如AtomicInteger
])或单元素数组:
final AtomicInteger number = new AtomicInteger();
...
number.getAndIncrement();