将Regular Regular Int转换为Final Java

时间:2014-04-18 16:06:41

标签: java inner-classes

我正在尝试在循环中实现内部类,并且进入了一个有趣的情况。内部类有方法,但是,当我尝试访问变量时,Netbeans给了我一个编译器错误并告诉我让int最终。

由于int是一个循环变量,因此它不能是最终的。我已经尝试创建新变量并将它们等同于循环变量,但这仍然会引发相同的错误。

这是基本语法(伪代码):

for(int i = 0; i < 10; i++)
{
     panels[i].printI(new printI(){System.out.println(i);});
}

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

添加一个临时final变量来保存值:

for(int i = 0; i < 10; i++)
{
     final int tmp = i;
     panels[i].printI(new printI(){System.out.println(tmp);});
}

答案 1 :(得分:4)

这是成语:

for(int i = 0; i < 10; i++)
{
  final int j = i;
  panels[i].printI(new printI(){System.out.println(j);});
}

答案 2 :(得分:0)

或者使用数组变体,它可以为您节省一行代码;)

for(final int[] i = {0}; i[0] < 10; i[0]++)
{
     panels[i[0]].printI(new printI(){System.out.println(i[0]);});
}