可能重复访问的变量:
Cannot refer to a non-final variable inside an inner class defined in a different method从Java匿名内部类
我只是尝试,并有一个问题。
为什么当我从一个匿名内部类访问非final类变量此接受:
static JLabel e = new JLabel("");
public static void main(String[] args) {
JButton b = new JButton("ok");
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
String l = e.getText();
}
});
}
但是下面是不能接受的,而不final修饰符:
到底是什么问题?为什么java的设计者选择只允许访问最终变量? – amit
我觉得他问为什么,他可以访问此特定的非最终目标,而不是其他。除非我记错了(完全有可能),那是因为gettext的()返回一个字符串,这是不可改变的(因而隐含决赛)。 – Charles