日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深入浅出理解 Variable used in lambda expression should be final or effectively final

發布時間:2024/2/28 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入浅出理解 Variable used in lambda expression should be final or effectively final 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

翻譯:lambda 表達式中使用的變量應該是 final 或者有效的 final

原因解析:lambda表達式(多用在線程領域),是由匿名內部類演變來的。

匿名內部類產生的對象一般存放在JVM的堆區域,而局部變量會存放在JVM的棧區域,隨著方法調用結束,局部變量就會出棧,被當做垃圾回收掉。

而此時,內部類對象可能還存在,如果內部類對象這時直接去訪問局部變量的話就會出問題,因為外部局部變量已經被回收了。

一個解決問題的思路是:將用到的變量在內部類中復制一份。

但這樣會造成數據不一致的問題:即使我們在內部類中復制了遍歷, 但在執行方法的時候局部變量的值改變了卻無法通知匿名內部類。隨著程序的運行,會導致程序運行的結果與預期不同

因此,我們需要給復制的變量加上final關鍵字,使他成為一個常量, 這樣就可以被lambda表達式或內部類調用了。


有用就點個贊吧!

總結

以上是生活随笔為你收集整理的深入浅出理解 Variable used in lambda expression should be final or effectively final的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。