0

我有一个问题,当我们在内部类中使用它时,为什么要设置一个字段 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");
        }
    });
4

1 回答 1

2

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

于 2013-11-23T10:34:46.887 回答