面試題-03

題目:

方法中的內部類能不能訪問方法中的局部變量,
 爲什麼?

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