btnButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
var1 = Float.parseFloat(txtBox.getText());
}
catch(NumberFormatException n) {
}
}
});
我无法在此处访问变量'var1',我收到错误:
从内部类中访问局部变量var1;需要被宣布为最终
如何在actionPerformed事件中访问变量?声明为final是没有用的,因为无法更改最终变量值。
答案 0 :(得分:2)
内部类ActionListener
包含局部变量的副本。如果变量在本地类中发生变化,则内部类变量可能不同步。
我认为最好将其设为全球(字段):
private float var1;
...
btnButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
var1 = Float.parseFloat(txtBox.getText());
}
catch(NumberFormatException n) {
}
}
});
答案 1 :(得分:2)
var1 = Float.parseFloat(txtBox.getText());
将该变量设为member
变量。
class outer {
//declare variable here
btnButton.addActionListener(new ActionListener()
{
// assign here
}
// you can use it later
使用但未在内部类中声明的任何局部变量,形式参数或异常参数必须声明为final。
在内部类的主体之前,必须明确赋值(§16)使用但未在内部类中声明的任何局部变量。
这里的一个例子来自spec: