題目:
方法中的內部類能不能訪問方法中的局部變量,
爲什麼?
內部類的生命週期和方法中的局部變量是不一樣的,
內部類是也是一個類,是存儲在堆中,
也只有當對該類的引用消失時,內部類纔會消亡。
而方法的局部變量是存儲在堆棧中的,當調用結束時就會退棧,
即在內存中這個屬性就消失了。
也就是說,內部類的生命週期超過了方法中局部變量的生命週期,
內部類可能會調用到已經消失的屬性,
因此內部類不能訪問方法中的局部變量。
解決方法就是在局部變量前加修飾符final ,
此時局部變量就會存在堆中,
生命週期跟工程的生命週期是一樣的,
此時內部類就可以訪問方法中的局部變量。