為什么內部類訪問的外部變量需要使用final修飾?
方法中的局部變量,方法結束后這個變量就要釋放掉,final保證這個變量始終指向一個對象。 首先,內部類和外部類其實是處于同一個級別,內部類不會因為定義在方法中就會隨著方法的執行完畢而跟隨者被銷毀。問題就來了,如果外部類的方法中的變量不定義final,那么當外部類方法執行完畢的時候,這個局部變量肯定也就被GC了,然而內部類的某個方法還沒有執行完,這個時候他所引用的外部變量已經找不到了。
為什么內部類訪問的外部變量需要使用final修飾?
方法中的局部變量,方法結束后這個變量就要釋放掉,final保證這個變量始終指向一個對象。 首先,內部類和外部類其實是處于同一個級別,內部類不會因為定義在方法中就會隨著方法的執行完畢而跟隨者被銷毀。問題就來了,如果外部類的方法中的變量不定義final,那么當外部類方法執行完畢的時候,這個局部變量肯定也就被GC了,然而內部類的某個方法還沒有執行完,這個時候他所引用的外部變量已經找不到了。