Cast Regular Int to Final Java
本问题已经有最佳答案,请猛点这里访问。
我正试图在一个循环中实现一个内部类,并且遇到了一个有趣的情况。但是,内部类有方法,当我尝试访问变量时,NetBeans会给我一个编译器错误,并告诉我将int设为final。
因为int是一个循环变量,所以它不能是final。我已经尝试创建新的变量并将它们等同于循环变量,但这仍然会引发相同的错误。
以下是基本语法(伪代码):
1 2 3 4 |
有什么主意吗?
添加一个临时的
1 2 3 4 5 | for(int i = 0; i < 10; i++) { final int tmp = i; panels[i].printI(new printI(){System.out.println(tmp);}); } |
这就是成语:
1 2 3 4 5 | for(int i = 0; i < 10; i++) { final int j = i; panels[i].printI(new printI(){System.out.println(j);}); } |
或者使用数组变量,这样可以保存一行代码;)
1 2 3 4 | for(final int[] i = {0}; i[0] < 10; i[0]++) { panels[i[0]].printI(new printI(){System.out.println(i[0]);}); } |