gpt4 book ai didi

Java - 如何在事件监听器中更改 'local?' 变量

转载 作者:搜寻专家 更新时间:2023-11-01 01:35:52 25 4
gpt4 key购买 nike

有一个简短的问题,我希望有人能回答。基本上我有一个 String 变量,它需要根据组合框中的值进行更改,组合框中附加了一个事件监听器。但是,如果我将字符串设置为最终字符串,则无法更改它,但如果我不将其设置为最终字符串,则 eclipse 会提示它不是最终字符串。最好(和最简单)的解决方法是什么?

代码如下

final String dialogOutCome = "";

//create a listener for the combo box
Listener selection = new Listener() {

public void handleEvent(Event event) {
//get the value from the combo box
String comboVal = combo.getText();

switch (comboVal) {
case "A": dialogOutCome = "a";
case "B": dialogOutCome = "b";
case "C": dialogOutCome = "c";
case "D": dialogOutCome = "d";
}
}
};

最佳答案

你不能。

考虑一下:

  • 只要声明的方法运行,局部变量就存在。
  • 一旦该方法调用结束(通常是因为该方法存在),变量就会消失
  • 听众可以(而且通常确实)活得更久

那么当方法已经返回并且监听器试图修改局部变量时会发生什么?

因为这个问题没有很好的答案,他们决定通过不允许访问非 final 局部变量来使这种情况成为不可能。

解决这个问题有两种方法:

  • 尝试更改字段而不是局部变量(这可能也更适合监听器的生命周期)
  • 使用 final 局部变量,您可以更改其内容(例如 ListString[] 与单个元素)。

关于Java - 如何在事件监听器中更改 'local?' 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14382064/

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