我有一个将 menuItems 添加到菜单的 for 循环。添加每个菜单项后,我想为其添加一个动作侦听器,因此当在菜单中单击时,它将从数组中加载相应的索引项。问题是java不允许我从匿名动作监听器类调用arraylist.get(i),因为它说我必须是最终的。我不能使 i 最终,因为它在每次迭代中递增。有人可以帮忙吗?干杯
问问题
952 次
2 回答
6
为什么不提取元素作为final
匿名类之外的引用?
for (int i = 0: i < list.size(); i++) {
final elem = list.get(i);
// now use it...
}
请注意,出于另一个原因,这更安全。在您的原始解决方案中,您将返回列表并且这可能会发生变化,这样您的匿名类可以在每个回调中提取不同的对象。在这个变体中,它给出了final
对实际实例的引用。
于 2012-12-13T17:11:37.687 回答
0
您可以将 ActionListener 实现为公共类,并在其构造函数中传递所需的菜单项。
于 2012-12-13T17:14:25.193 回答