Java - 从匿名类内部访问循环计数器

时间:2012-12-13 17:10:42

标签: java

我有一个for循环,它将menuItems添加到菜单中。添加每个菜单项后,我想添加一个actionlistener,所以当在菜单中单击它时,它将从数组中加载相应的索引项。问题是java不允许我从匿名动作监听器类调用arraylist.get(i),因为它必须是最终的。我不能让我最终,因为它在每次迭代时递增。任何人都可以帮忙吗?欢呼声

2 个答案:

答案 0 :(得分:5)

为什么不在匿名类之外提取元素作为final引用?

for (int i = 0: i < list.size(); i++) {
   final elem = list.get(i);
   // now use it...
}

注意这是另一个原因更安全。在原始解决方案中,您将返回列表并可能发生更改,以便您的匿名类可以在每个回调中提取不同的对象。在此变体中,它给出了对实际实例的final引用。

答案 1 :(得分:0)

您可以将ActionListener实现为公共类,并在其构造函数中传递所需的菜单项。