gpt4 book ai didi

Java Final——一个永恒的谜

转载 作者:行者123 更新时间:2023-12-02 10:54:41 24 4
gpt4 key购买 nike

suggestBox.addKeyUpHandler( new KeyUpHandler() {
public void onKeyUp(KeyUpEvent event) {
if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
String boxText = suggestBox.getText();
if (!boxText.equals("")) {
suggestPanel.add(checkBoxFactory(boxText, candidateNames));
suggestBox.setText("");
}
}
}
});

我一直无法理解为什么java强制我将ArrayList(candiateNames)声明为final。这是为什么?

最佳答案

它是一个内部类,传递到addKeyUpHandler中——内部类外部引用的所有变量都需要声明为final才能在内部类中使用。这是因为本地类实例必须维护变量的单独副本,因为它可能比函数的生命周期更长;为了避免同一作用域内同名的两个可修改变量发生混淆,该变量被强制设为不可修改。

只需在调用使用内部类的方法之前执行 final {type} {new-varname} = {old-varname}; ,然后使用 {new-varname} 里面。

关于Java Final——一个永恒的谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2320762/

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