为什么我们要将内部类外部字段的修饰符更改为final



我有一个问题,当我们在innerclass中使用字段final时,为什么要设置它?例如,为什么我们要将textField的修饰符设置为final?我的问题是,如果我们不宣布它为最终版本,为什么它将不可用?

  final TextField textField = new TextField();
    Button b = new Button();
    b.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            textField.setText("hello");
        }
    });

原因是从匿名类中访问的变量的值被复制了。如果可以从类外修改变量,这将产生一个过时的值,这可能会影响程序的正确性并产生意外的结果。Java强制您将这些变量声明为final,从而避免了这个问题。

最新更新