Java EventHandler何时以及为什么要求对象为final?

Java EventHandler何时以及为什么要求对象为final?,java,gwt,event-handling,final,Java,Gwt,Event Handling,Final,我从一个GWT项目中获得了以下代码,该项目是onModuleLoad()方法的一部分(如果您不了解GWT,则类似于Java的main方法): 为什么这两个局部变量必须是最终的?这个问题是关于访问方法局部变量的局部内部类的更一般问题的特化:(péter Török,tnx指出了这一点) 这也是重复的: final TextBox t1 = new TextBox(); final Label lt1 = new Label(); t1.addKeyUpHandler(new KeyUpHand

我从一个GWT项目中获得了以下代码,该项目是onModuleLoad()方法的一部分(如果您不了解GWT,则类似于Java的main方法):


为什么这两个局部变量必须是最终的?

这个问题是关于访问方法局部变量的局部内部类的更一般问题的特化:(péter Török,tnx指出了这一点)

这也是重复的:
final TextBox t1 = new TextBox();
final Label lt1 = new Label(); 

t1.addKeyUpHandler(new KeyUpHandler() {

    @Override
    public void onKeyUp(KeyUpEvent event) {
        // TODO Auto-generated method stub
        if (!(t1.getText().matches("\\w{2}-\\w{2}-\\w{2}")))
            lt1.setText("Invalid.");
            else
            lt1.setText("OK.");
    }
});