将Regular Regular Int转换为Final Java

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

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

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

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

有任何想法吗?

添加临时final变量以保存值:

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

这是成语:

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

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

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