变量“i”作为最终变量

时间:2015-10-08 05:18:32

标签: java android for-loop

我在问这个问题是为了澄清。

我有一个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
}

我的问题是为什么我需要做出最终决定,如果我将其宣布为全球会发生什么。

请帮我澄清一下。

提前致谢。

2 个答案:

答案 0 :(得分:2)

我认为你错误的是一个匿名的内部阶级。看看这个stackoverflow answer

答案 1 :(得分:0)

在哪里声明它并不重要,它必须是final。像这样使用循环索引的方法是使用第二个变量。

for (int i = 0; i < 10; i++) {
    final int j = i;
    // now you can use j instead
}