第七章 第42條:Lambda表達(dá)式優(yōu)先于匿名類

帶有單個(gè)抽象方法的接口可以用lambda表達(dá)式來(lái)替代。lambda表達(dá)式相較于相同功能的匿名類更加簡(jiǎn)潔直接。
編譯器可以利用類型推斷來(lái)自動(dòng)推斷類型,所以lambda表達(dá)式中參數(shù)和返回值類型可以省略。編譯器無(wú)法推斷時(shí)再手動(dòng)指定,或者加上類型后能使程序更加清晰也可以指定。
不要使用原生態(tài)類型。使用原生態(tài)類型會(huì)使編譯器無(wú)法推斷類型,必須在lambda中指定類型,這大大增加了lambda表達(dá)式的繁瑣程度。
由于lambda表達(dá)式?jīng)]有名字與文檔,所以如果lambda表達(dá)式不是自描述的或者超出來(lái)了3行,就不要放到lambda表達(dá)式里了
枚舉構(gòu)造器中的lambda表達(dá)式是無(wú)法訪問(wèn)枚舉的實(shí)例成員的。
盡可能不要序列化lambda或匿名實(shí)例。

以下情況仍需要使用匿名類:
1.想創(chuàng)建抽象類的實(shí)例。
2.多個(gè)抽象方法的接口創(chuàng)建實(shí)例。
3.需要從函數(shù)對(duì)象主體內(nèi)部訪問(wèn)它,需要使用匿名類,因?yàn)閘ambda的this指外圍實(shí)例。

思考:
lambda表達(dá)式很好用,大段的代碼能通過(guò)一行l(wèi)ambda表達(dá)式就解決掉。但很多時(shí)候lambda表達(dá)式會(huì)寫的十分臃腫,可讀性很差。比如下面這段代碼,一個(gè)lambda表達(dá)式整整70多行。完全可以抽一些方法出來(lái)。過(guò)長(zhǎng)的lambda表達(dá)式可以拆成多個(gè)短的。通過(guò)變量命名來(lái)增加可讀性。

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容