Java 中 Lambda 表示式和方法引用的差異?


Lambda 表示式是一種匿名方法(無名方法),用於提供一個由函式式介面定義的方法的內聯執行,而方法引用類似於Lambda 表示式,它引用了一個方法而不執行它。在 Lambda 表示式中,可以使用箭頭 (->) 運算子將引數和功能連線起來,在方法引用中,(::) 運算子將方法名與一個物件或類的名稱分隔開。

Lambda 表示式的語法

([comma seperated argument-list]) -> {body}

方法引用的語法

<classname> :: <methodname>

示例

import java.util.*;

public class LambdaMethodReferenceTest {
   public static void main(String args[]) {
      List<String> myList = Arrays.asList("INDIA", "AUSTRALIA", "ENGLAND", "NEWZEALAND", "SCOTLAND");
      System.out.println("------- Lambda Expression --------");

      // Using Lambda function to call system.out.println()
      myList.stream().map(s -> s.toUpperCase())
                     .forEach(s -> System.out.println(s));

      System.out.println("------- Method Reference ---------");

      // Using Method reference to call system.out.println()
      myList.stream().map(String :: toUpperCase).sorted()
                     .forEach(System.out :: println);
   }
}

輸出

------- Lambda Expression --------
INDIA
AUSTRALIA
ENGLAND
NEWZEALAND
SCOTLAND
------- Method Reference --------
AUSTRALIA
ENGLAND
INDIA
NEWZEALAND
SCOTLAND

更新日期:2020-07-11

7K+ 次瀏覽

開啟你的 職業生涯

完成課程即可獲得認證

開始學習
廣告