2013-03-05 36 views
-3

我在問這個問題,因爲最終的&非final的有相同的作用域,所以爲什麼VARIABLE被添加爲 在java中的最終變量.. &添加一些變量有什麼影響作爲最終的,當它只在某個範圍內訪問時。爲什麼final變量用在java的內部類中

public void game() 
{ 
    final String str = "a" ; 
     //String str ="a" ; 

    class hollow 
    { 
     public void game() 
     { 
      System.out.println(str); 
     } 
    } 
} 
+2

請您澄清一下您的問題! – jazzbassrob 2013-03-05 12:03:36

+1

請參閱[不能引用在不同方法中定義的內部類中的非最終變量](http://stackoverflow.com/q/1299837/851811)或[爲什麼只有最終變量可以在匿名類中訪問?] (http://stackoverflow.com/q/4732544/851811)。 – 2013-03-05 12:05:46

+0

謝謝@XaviLópez – user2125918 2013-03-05 12:09:30

回答

0

最終和內部類http://en.wikipedia.org/wiki/Final_%28Java%29#Final_variables

當匿名內部類的方法的主體內定義, 所有變量在該方法的範圍中聲明最終是 從內部內訪問類。一旦分配完畢,最終變量的 值不能改變。這允許Java 編譯器在運行時「捕獲」變量的值,並將 副本作爲內部類中的字段存儲。一旦外部方法終止並且其堆棧幀已被移除,則原始變量 消失,但內部類的私有副本仍然存在於該類自己的 內存中。

相關問題