匿名内部类与Lambda表达式
匿名內(nèi)部類與Lambda表達(dá)式
一.匿名內(nèi)部類
誰(shuí)沒(méi)有名字:匿名內(nèi)部類指的是接口的實(shí)現(xiàn)類 或者 抽象類的子類沒(méi)有名字。
1.前提:
1)必須要有一個(gè)接口、抽象類(普通類也可以,但是方法不會(huì)強(qiáng)制重寫,不建議)
2)格式:
new 接口/抽象類(){
//復(fù)寫抽象方法
}
3)本質(zhì):匿名內(nèi)部類的本質(zhì)其實(shí)是一個(gè)接口的實(shí)現(xiàn)類【對(duì)象】,或者抽象類的子類【對(duì)象】
2.使用場(chǎng)景:
在實(shí)際運(yùn)用中,如果方法的參數(shù)是父類類型,那么調(diào)用方法時(shí)可以傳遞子類對(duì)象,但是為了圖省事不想寫子類,那么這個(gè)時(shí)候可以使用匿名內(nèi)部類。
二.Lambda表達(dá)式
1.前提:
Lambda表達(dá)式的使用是由條件的,必須要有一個(gè)【函數(shù)式接口】,在接口中只能有一個(gè)抽象方法【但是可以有默認(rèn)方法和靜態(tài)方法】。
三.兩者的不同之處
1.所需類型不同
匿名內(nèi)部類:可以是接口,也可以是抽象類,還可以是具體類
Lambda表達(dá)式:只能是接口
2.使用限制不同
如果接口中有且僅有一個(gè)抽象方法,可以使用Lambda表達(dá)式,也可以使用匿名內(nèi)部類如果接口中多于一個(gè)抽象方法,只能使用匿名內(nèi)部類,而不能使用Lambda表達(dá)式
3.實(shí)現(xiàn)原理不同
匿名內(nèi)部類∶編譯之后,產(chǎn)生一個(gè)單獨(dú)的.class字節(jié)碼文件
Lambda表達(dá)式︰編譯之后,沒(méi)有一個(gè)單獨(dú)的.class字節(jié)碼文件。對(duì)應(yīng)的字節(jié)碼會(huì)在運(yùn)行的時(shí)候動(dòng)態(tài)生成
總結(jié)
以上是生活随笔為你收集整理的匿名内部类与Lambda表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 南辕北辙这则寓言故事告诉我们什么道理 南
- 下一篇: 匿名内部类与Lambda表达式习题