lambda表示式與函式式(FunctionalInterface)介面
阿新 • • 發佈:2020-07-02
一、lambda表示式
lambda表示式
Lambda 是一個匿名函式,我們可以把 Lambda 表示式理解為是一段可以傳遞的程式碼(將程式碼像資料一樣進行傳遞)。使用它可以寫出更簡潔、更 靈活的程式碼。作為一種更緊湊的程式碼風格,使Java的語言表達能力得到了提升。
lambda表示式的使用
1、舉例:
(o1,o2)->Integer.compare(o1,o2);
2、格式:
Lambda 表示式:在Java 8 語言中引入的一種新的語法元素和操作符。這個操作符為 “->” , 該操作符被稱為Lambda 操作符 或箭頭操作符。它將 Lambda 分為兩個部分:
左側:指定了 Lambda 表示式需要的引數列表
右側:指定了 Lambda 體,是抽象方法的實現邏輯,也即 Lambda 表示式要執行的功能
3、語法格式(6種情況)
語法格式一:無引數,無返回值
Runnable r1 = ()->{System.out.println("lambda")};
語法格式二:需要一個引數,無返回值
Consumer <String> con = (String s)->{
System.out.println(s);
};
語法格式三:資料型別可省略,因為可由編譯器推斷得出,稱為==型別推斷==
Consumer <String> con = (s)->{
System.out.println(s);
};
語法格式四:lambda若只需要一個引數,引數的小括號可以省略
Consumer <String> con = s->{
System.out.println(s);
};
語法格式五:語法格式五:lambda 需要有兩個以上的引數,多條執行語句,並可以有返回值
Comparator<Integer> com2 = (o1,o2)->{
System.out.println(o1);
System.out.println(o2);
return Integer.compare(o1,o2) ;
};
語法格式六:當lambda體只有一條語句時,return 與大括號若有可以省略
Comparator<Integer> com2 = (o1,o2)->Integer.compare(o1,o2);
4、lambda表示式的本質
作為左邊介面的例項,只能用於函式式介面.
通常用於代替匿名內部類的實現
二、函式式介面
定義:只包含一個抽象方法的介面,稱為函式式介面
可以通過@FunctionalInterface註解來驗證它是否為一個函式式介面。