方法中的匿名內部類只能訪問final型別的區域性變數

2021-08-07 20:18:42 字數 314 閱讀 2166

今天又看了一遍基礎內容,看到了匿名內部類,發現了一段**

class outerclass }

} }為什麼doit傳入引數是x呢。仔細想了一下,是這樣的。innerclass即內部類,它的生命週期和普通類一樣,即建立的時候跟它分配一塊記憶體,直到沒有引用指向它的時候,它才會被gc**。   那麼再想想,如果 x是乙個普通的區域性變數,那麼它在成員方法doit呼叫結束的時候,就死亡了。而內部類仍然還在使用它,這就產生了矛盾。     解決辦法就是用final修飾,用final修飾後,編譯器會把內部類需要訪問的final區域性變數做乙份拷貝,做為該內部類物件的成員變數,這樣就可以訪問啦。

內部類 內部類的訪問 匿名內部類

內部類 將乙個類定義在另乙個類的裡面,對立面那個類就成為內部類 內建類,巢狀類 定義 當描述事物時,事物的內部還有事物,該事物用內部類來描述。因為內部事務在使用外部事物的內容。舉例子心臟 內部類的訪問規則 1內部類可以直接訪問外部類中的成員,包括私有。之所以可以直接訪問外部類的成員 因為內部類中持有...

內部類 匿名內部類的使用

內部類的使用 classouter classinner public voidget a a public voidtest this.get newa public voidfun1 system.out println i public classtest public static void...

內部類的介紹 匿名內部類

顧名思義 沒有名字的內部類,其實就是沒有類名的區域性內部類 一切特徵都與區域性內部類相同 這句話請記住 必須繼承乙個父類或者實現乙個介面 心得 為什麼介面不能直接new,直接例項化 其實我覺得是可以的,但是不建議樣做,為什麼呢,我們平常都是new介面的實現類,或者叫做子類把,因為介面的方法,在子類中...