日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

匿名内部类与Lambda表达式

發布時間:2023/12/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 匿名内部类与Lambda表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

匿名內部類與Lambda表達式

一.匿名內部類
誰沒有名字:匿名內部類指的是接口的實現類 或者 抽象類的子類沒有名字。
1.前提:
1)必須要有一個接口、抽象類(普通類也可以,但是方法不會強制重寫,不建議)
2)格式:
new 接口/抽象類(){
//復寫抽象方法
}
3)本質:匿名內部類的本質其實是一個接口的實現類【對象】,或者抽象類的子類【對象】

2.使用場景:
在實際運用中,如果方法的參數是父類類型,那么調用方法時可以傳遞子類對象,但是為了圖省事不想寫子類,那么這個時候可以使用匿名內部類。

public class Demo4 {public static void main(String[] args) {//匿名內部類,可調用方法useCalculator(new Calculator() {@Overridepublic int calc(int a, int b) {return a+b;}}); }public static void useCalculator(Calculator calculator){System.out.println(calculator.calc(10,20));} } interface Calculator{int calc(int a,int b); } 打印結果 ------------------------------------------------------------------ 30

二.Lambda表達式
1.前提:
Lambda表達式的使用是由條件的,必須要有一個【函數式接口】,在接口中只能有一個抽象方法【但是可以有默認方法和靜態方法】。

public class Demo4 {public static void main(String[] args) {//Lambda表達式(簡化匿名內部類)useCalculator((a, b) -> a+b);}public static void useCalculator(Calculator calculator){System.out.println(calculator.calc(10,20));} }@FunctionalInterface//注解:可用于檢查是否為函數式接口 interface Calculator{int calc(int a,int b);//可以有默認方法,通過接口實現類對象調用default void getSum(int x,int y){System.out.println(x+y);}//通過類名調用static void getMin(int m,int n){System.out.println(Math.min(m,n));} }打印結果 ------------------------------------------------------------------ 30 //1. Lambda標準格式 (參數類型1 參數名1,參數類型2 參數名2) -> { 方法體; return 返回值; } //2. Lambda省略格式,省略參數數據類型 (參數名1,參數名2) -> { 方法體; return 返回值; } //3. Lambda省略格式,{}中的代碼只有一條語句,那么大括號可以省略、rerturn和分號都要省略 (參數名1,參數名2) -> 返回值 //4. Lambda省略格式,參數只有一個時,()可以省略 參數名 -> 返回值

三.兩者的不同之處

1.所需類型不同
匿名內部類:可以是接口,也可以是抽象類,還可以是具體類
Lambda表達式:只能是接口
2.使用限制不同
如果接口中有且僅有一個抽象方法,可以使用Lambda表達式,也可以使用匿名內部類如果接口中多于一個抽象方法,只能使用匿名內部類,而不能使用Lambda表達式
3.實現原理不同
匿名內部類∶編譯之后,產生一個單獨的.class字節碼文件
Lambda表達式︰編譯之后,沒有一個單獨的.class字節碼文件。對應的字節碼會在運行的時候動態生成

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的匿名内部类与Lambda表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。