第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Java雙括號(hào)初始化與lambda

Java雙括號(hào)初始化與lambda

紫衣仙女 2022-10-20 17:00:33
如果您搜索“java 雙括號(hào)”,您會(huì)發(fā)現(xiàn)反對(duì)使用它的有力論據(jù)。每次有人使用雙括號(hào)初始化時(shí),都會(huì)殺死一只小貓。 https://stackoverflow.com/a/27521360/555631論點(diǎn)是您創(chuàng)建了太多匿名類,并且您可能會(huì)造成內(nèi)存泄漏。lambdas有什么不同嗎?他們每個(gè)人都創(chuàng)建了一個(gè)匿名內(nèi)部類,他們每個(gè)人都引用了它們的封閉閉包。
查看完整描述

2 回答

?
飲歌長嘯

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊

Lambda 表達(dá)式不同于碰巧實(shí)現(xiàn)函數(shù)式接口的匿名內(nèi)部類。

匿名內(nèi)部類將在編譯時(shí)創(chuàng)建自己的類文件Foo$1.class,如果它包含在Foo類中,通常類似于 。它是實(shí)現(xiàn)接口或子類的全功能類。要在其范圍之外引用本地值,它將在幕后在匿名內(nèi)部類中創(chuàng)建一個(gè)實(shí)例變量,該變量表示該值的副本。這就是為什么變量必須是有效的最終變量——否則實(shí)際變量可能會(huì)改變并且副本可能是陳舊的。

Lambda 表達(dá)式不創(chuàng)建匿名內(nèi)部類。他們使用 ajava.lang.invoke.LambdaMetafactory來生成 a CallSite,稍后可以使用它來執(zhí)行 lambda 表達(dá)式。lambda 表達(dá)式,無論是塊還是表達(dá)式,都被轉(zhuǎn)換為包含它的類中的隱藏私有靜態(tài)方法。不是創(chuàng)建具有隱藏變量的類,而是將捕獲的值轉(zhuǎn)換為隱藏的私有靜態(tài)方法的參數(shù)。局部值仍然必須是有效的最終值,因?yàn)閭鬟f給方法的值又是一個(gè)副本。invokedynamic該方法由JVM 中的指令調(diào)用。


查看完整回答
反對(duì) 回復(fù) 2022-10-20
?
Smart貓小萌

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊

是的,它們是不同的。

  • Lambda 實(shí)際上并不一定要?jiǎng)?chuàng)建匿名類——它們當(dāng)然不只是被翻譯成等效的匿名類。它們的創(chuàng)建比這要復(fù)雜得多,并且通常以在運(yùn)行時(shí)創(chuàng)建的匿名類結(jié)束,但不一定。

  • Lambda 不捕獲除了其中特別提到的變量之外的任何內(nèi)容,這與匿名內(nèi)部類不同,如果它們是在實(shí)例方法中定義的,則會(huì)捕獲封閉的類對(duì)象。


查看完整回答
反對(duì) 回復(fù) 2022-10-20
  • 2 回答
  • 0 關(guān)注
  • 138 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)