我知道,这个问题已经被问过了,我再次向你道歉,但我无法弄清楚为什么会这样呢?有人可以帮我解决一下吗? 例如.-
public class File
{
public static void main(String[] main)
{
File obj=new File();
obj.method();
}
void method()
{
for(int i=0;i<10;i++)
{
class Inner
{
void display()
{
System.out.println("i is : "+i); //Gives error,i needs to be declared final
}
}
Inner cls=new Inner();
cls.display();
}
}
}
我的问题是 -
谢谢......
答案 0 :(得分:1)
1)由于安全原因,该变量需要是最终的或有效的。如果对象用于修改传递的对象怎么办?
2)你必须在课堂内移动你的for循环。别无他法。
内部类只想使用实例成员,只需使用它们,这是你在内部类中唯一可以做的事情。你没有命令。为了实现这一功能,Java制定了最终或有效的最终规则。
好的,让我们看一下变量final
时会发生什么?
这些final
变量的所有副本将由内部类使用,而不是实际的变量。
如果你没有在这里听到有效的最后一句,你可以去:Difference between final and effectively final