內(nèi)部類的生命周期和方法中的局部變量是不一樣的,內(nèi)部類是也是一個(gè)類,是存儲在堆中,也只有當(dāng)對該類的引用消失時(shí),內(nèi)部類才會消亡。而方法的局部變量是存儲在堆棧中的,當(dāng)調(diào)用結(jié)束時(shí)就會退棧,即在內(nèi)存中這個(gè)屬性就消失了。也就是說,內(nèi)部類的生命周期超過了方法中局部變量的生命周期,內(nèi)部類可能會調(diào)用到已經(jīng)消失的屬性,因此內(nèi)部類不能訪問方法中的局部變量。 解決方法就是在局部變量前加修飾符final ,此時(shí)局部變量就會存在堆中,生命周期跟工程的生命周期是一樣的,此時(shí)內(nèi)部類就可以訪問方法中的局部變量。 |
|