Java筆記--Lambda表達(dá)式
lambda表達(dá)式是從JDK8開(kāi)始出現(xiàn)的一種新語(yǔ)法形式,可以簡(jiǎn)化匿名內(nèi)部類的代碼寫(xiě)法。

我們來(lái)實(shí)際感受一下lambda表達(dá)式是如何簡(jiǎn)化我們的匿名內(nèi)部類的。

這一串是我們的匿名內(nèi)部類。
接下來(lái)我們使用lambda表達(dá)式來(lái)對(duì)內(nèi)部匿名類做簡(jiǎn)化:
():匿名內(nèi)部類被重寫(xiě)方法的形參。
我們這里的形參是空的,所以不寫(xiě)。
{ }:被重寫(xiě)方法的方法體代碼。
System.out.println("匿名內(nèi)部?jī)?nèi),重寫(xiě)后的show方法...");

可以看到,代碼被簡(jiǎn)化了不少。
注意:lambda表達(dá)式只允許操作 函數(shù)式編程接口。
說(shuō)人話就是:有,且只有一個(gè)抽象方法的接口。
lambda表達(dá)式的省略寫(xiě)法:
1、參數(shù)類型可以省略不寫(xiě)
2、如果只有一個(gè)參數(shù),參數(shù)類型可以省略,同時(shí)()也可以省略
3、如果lambda表達(dá)式的方法體代碼只有一行代碼,可以省略大括號(hào)不寫(xiě),同時(shí)要省略分號(hào),此時(shí),如果這行代碼是return語(yǔ)句,必須省略return語(yǔ)句不寫(xiě),同時(shí)也必須省略";"不寫(xiě)。
lambda表達(dá)式和匿名內(nèi)部類的區(qū)別:
1、使用限制不同
匿名內(nèi)部類:可以操作類(普通類、抽象類),也可以操作接口(抽象接口,函數(shù)式接口)。
lamdba表達(dá)式只能操作函數(shù)式接口。
2、實(shí)現(xiàn)原理不同:
匿名內(nèi)部類:編譯之后,產(chǎn)生一個(gè)單獨(dú)的.class字節(jié)碼文件。
lambda表達(dá)式:編譯之后,沒(méi)有單獨(dú)的字節(jié)碼文件。