다음 코드에서 알 수 있듯이 ActionListener 익명 내부 클래스에서 JLabel에 액세스하고 있습니다. 이것은 오류없이 나를 제공하므로 어떻게 허용됩니까? 그러나 JLabel이 INSIDE 인 경우 메서드는 최종 한정자없이 허용되지 않습니까? 변수는 def 메서드 내 경우Java - 익명의 내부 클래스에서 최종 변수가 아닌 변수에 액세스하려면 어떻게해야합니까?
JLabel e = new JLabel("");
public void myMethod() {
JButton b = new JButton("ok");
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
e.setSize(200,200);
}
});
}
가능한 복제본 [Java - 익명 내부 클래스의 변수 액세스] (http://stackoverflow.com/questions/10524635/java-accessing-variables-from-an-anonymous-inner-class) : 둘 다 이유를 묻습니다. 지역 변수가 아닌 최종 필드에 액세스해도 괜찮습니까? 또는 나는 무엇인가 놓쳤 느냐? 내가 그랬다면 - 분명히하십시오. – amit