方法中的內部類訪問方法中的局部變量爲什麼要加final

內部類的生命週期和方法中的局部變量是不一樣的,內部類是也是一個類,是存儲在堆中,也只有當對該類的引用消失時,內部類纔會消亡。而方法的局部變量是存儲在堆棧中的,當調用結束時就會退棧,即在內存中這個屬性就消失了。也就是說,內部類的生命週期超過了方法中局部變量的生命週期,內部類可能會調用到已經消失的屬性,因此內部類不能訪問方法中的局部變量。 解決方法就是在局部變量前加修飾符final ,此時局部變量就會存在堆中,生命週期跟工程的生命週期是一樣的,此時內部類就可以訪問方法中的局部變量。
發佈了7 篇原創文章 · 獲贊 7 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章