匿名内部类与Lambda表达式
生活随笔
收集整理的這篇文章主要介紹了
匿名内部类与Lambda表达式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
匿名內部類與Lambda表達式
一.匿名內部類
誰沒有名字:匿名內部類指的是接口的實現類 或者 抽象類的子類沒有名字。
1.前提:
1)必須要有一個接口、抽象類(普通類也可以,但是方法不會強制重寫,不建議)
2)格式:
new 接口/抽象類(){
//復寫抽象方法
}
3)本質:匿名內部類的本質其實是一個接口的實現類【對象】,或者抽象類的子類【對象】
2.使用場景:
在實際運用中,如果方法的參數是父類類型,那么調用方法時可以傳遞子類對象,但是為了圖省事不想寫子類,那么這個時候可以使用匿名內部類。
二.Lambda表達式
1.前提:
Lambda表達式的使用是由條件的,必須要有一個【函數式接口】,在接口中只能有一個抽象方法【但是可以有默認方法和靜態方法】。
三.兩者的不同之處
1.所需類型不同
匿名內部類:可以是接口,也可以是抽象類,還可以是具體類
Lambda表達式:只能是接口
2.使用限制不同
如果接口中有且僅有一個抽象方法,可以使用Lambda表達式,也可以使用匿名內部類如果接口中多于一個抽象方法,只能使用匿名內部類,而不能使用Lambda表達式
3.實現原理不同
匿名內部類∶編譯之后,產生一個單獨的.class字節碼文件
Lambda表達式︰編譯之后,沒有一個單獨的.class字節碼文件。對應的字節碼會在運行的時候動態生成
總結
以上是生活随笔為你收集整理的匿名内部类与Lambda表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 南辕北辙这则寓言故事告诉我们什么道理 南
- 下一篇: 匿名内部类与Lambda表达式习题