我在问这个问题是为了澄清。
我有一个for循环,其中有一些内部方法。 当我在这个内部方法中使用“i”时,IDE一直要求我将其作为最终的“i”。
for(int i=0; i<array.size();i++) {
some innermethodcode(){
Log.e("array",""+array.get(i)); // it says me make it final;
}
如果我将“i”声明为像
那样全球化,会发生什么int i;
或者如果我将“i”声明为
会有什么不同int i = 0;
并将其用作
for(i=0; i<array.size();i++) {
some innermethodcode(){
Log.e("array",""+array.get(i)); // it says me make it final;
}
是否会导致“i”的完全不可预测的值,因为使用它的地方不会在循环运行的同时执行?
修改
我非常了解如何从这样的循环变量中获取最终变量:
for (int i = 0; i < 10; i++) { final int j = i; // now you can use j instead }
我的问题是为什么我需要做出最终决定,如果我将其宣布为全球会发生什么。
请帮我澄清一下。
提前致谢。
答案 0 :(得分:2)
我认为你错误的是一个匿名的内部阶级。看看这个stackoverflow answer。
答案 1 :(得分:0)
在哪里声明它并不重要,它必须是final
。像这样使用循环索引的方法是使用第二个变量。
for (int i = 0; i < 10; i++) {
final int j = i;
// now you can use j instead
}