1. 程式人生 > 實用技巧 >lambda表示式與函式式(FunctionalInterface)介面

lambda表示式與函式式(FunctionalInterface)介面

一、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註解來驗證它是否為一個函式式介面。

1、java四大核心函式式介面

2、其它介面