2013-01-25 94 views
0

最終局部變量(在一個方法內)的生命是否與其他局部變量相同,即一旦方法調用結束並且堆棧被刪除,它們就會死亡?
如果是這樣的話,我們如何才能在方法本地類中獲取最終局部變量,但其他局部變量不能?
請澄清我的查詢。最終局部變量的壽命

+0

它們與其他變量一樣,但是內部類需要訪問它們是最終的。動機是,分配給這樣一個變量不應該發生在堆棧上(該方法可能已經返回).addresses,名稱指向的地方。 –

回答

2

當您創建一個匿名內部類的實例時,您實際上正在創建一個閉包,這是一種特殊的語言結構,它被稱爲「關閉」局部變量。隱藏的問題是,最終變量的值被複制到匿名實例的綜合實例變量中。像往常一樣,堆棧分配的最終變量本身隨着方法而死。