以下代碼定義方法中的類。在方法中定義的內部類需要方法中聲明的變量爲final,如果它們是從內部類中訪問的
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
改性劑被除去。
局部變量localString從內部類中訪問;需要 被聲明爲final
爲什麼局部變量localString
需要申報final
,在這種情況下?