gpt4 book ai didi

java - 如何解决 for 循环中的局部引用变量?

转载 作者:搜寻专家 更新时间:2023-10-31 19:51:48 25 4
gpt4 key购买 nike

我正在写一个 Swing应用程序并尝试制作一个菜单,其中每个 menu item有自己的action :

这是我想解决这个问题的方法:

private void createGameLevelMenuItems(JMenu menu){
for (int i = 0; i<10; i++) {
JMenuItem item = new JMenuItem(new AbstractAction("Level-" + i) {
@Override
public void actionPerformed(ActionEvent e) {
game.loadGame(i);
board.refresh();
pack();
}
});
menu.add(item);
}
}

但是,我不能使用 loadGame(i),因为它说 i 必须是最终的。我明白这是为什么,但我不知道如何解决。

最佳答案

快速技巧:在循环的每次迭代中定义一个 final 变量,该变量采用 i 的(非最终)值并使用它:

private void createGameLevelMenuItems(JMenu menu){

for (int i = 0; i<10; i++) {
final int j = i; // <--- this line do the thing
JMenuItem item = new JMenuItem(new AbstractAction("Level-" + j) {
@Override
public void actionPerformed(ActionEvent e) {
game.loadGame(j);
board.refresh();
pack();
}
});
menu.add(item);
}
}

关于java - 如何解决 for 循环中的局部引用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54041757/

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