gpt4 book ai didi

Java - 在匿名内部类中使用非最终变量?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:42:21 25 4
gpt4 key购买 nike

在一次学校测试中,我在匿名内部类中使用了非最终变量。在学校计算机和我的私有(private)计算机(使用 x86 jre1.8.0_45)上它正在工作。

但是,在老师的笔记本电脑上,Eclipse 显示错误(变量应使用 final)。他使用的是jre1.8.0.x版本(不知道确切的版本)。

知道为什么它在我的电脑上运行而不在他的电脑上运行吗?

在此代码示例中,没有在 ActionListener 的 actionPerformed 函数中使用最终对象 jLabel:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;

public class Main {
public Main(String[] args) {
JLabel jLabel = new JLabel();
JButton button = new JButton();
button.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
jLabel.setText("xyz");

}
});
}
}

最佳答案

较新的 java 版本在这个问题上更能容忍:它们只要求它们应该是“有效最终的”。

最后,差别不是太大——你只能使用你可以用 final 标记的变量;您不得修改它们。

如果你在那个地方,你也可以让它们“真正”final,而且它在任何地方都有效。

顺便说一句,在 1.8 上,使用新的 lambda 语法你可以写得更优雅

button.addActionListener((ActionEvent arg0) -> jLabel.setText("xyz"));

关于Java - 在匿名内部类中使用非最终变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34136377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com