<分区>
以下代码在方法中定义了一个类。
final class OuterClass
{
private String outerString = "String in outer class.";
public void instantiate()
{
final String localString = "String in method."; // final is mandatory.
final class InnerClass
{
String innerString = localString;
public void show()
{
System.out.println("outerString : "+outerString);
System.out.println("localString : "+localString);
System.out.println("innerString : "+innerString);
}
}
InnerClass innerClass = new InnerClass();
innerClass.show();
}
}
调用方法instantiate()
。
new OuterClass().instantiate();
下面的语句,
final String localString = "String in method.";
instantiate()
方法内部会导致如下编译时错误,如果 final
修饰符被删除。
local variable localString is accessed from within inner class; needs to be declared final
在这种情况下,为什么局部变量 localString
需要声明为 final
?