我有一个问题,当我们在内部类中使用字段时,为什么要设置它? 例如为什么我们要把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 通过强制您将这些变量声明为最终变量并因此不可修改来避免此问题。
关于java - 为什么要将内部类外部字段的修饰符改为final?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20161159/