爲什麼lambda表達式使用的局部變量要是final的

爲什麼 Lambda 表達式(匿名類) 不能訪問非 final 的局部變量呢? 因爲實例變量存在堆中,而局部變量是在棧上分配,Lambda 表達(匿名類) 會在另一個線程中執行。如果在線程中要直接訪問一個局部變量,可能線程執行時該局部變量已經被銷燬了,而 final 類型的局部變量在 Lambda 表達式(匿名類) 中其實是局部變量的一個拷貝,因爲之前的存放在棧中(lambda表達式在其他線程運行
相關文章
相關標籤/搜索