Java中的函式指標


從Java 8開始,引入了lambda表示式,它充當函式指標。

Lambda表示式在Java 8中引入,被譽為Java 8最重要的特性。Lambda表示式促進了函數語言程式設計,並大大簡化了開發。

語法

lambda表示式的語法特徵如下。

parameter -> expression body

以下是lambda表示式的重要特徵。

  • 可選型別宣告 - 無需宣告引數的型別。編譯器可以從引數的值推斷出型別。
  • 引數周圍可選的小括號 - 單個引數無需用括號括起來。多個引數需要括號。
  • 可選的大括號 - 如果表示式體包含單個語句,則無需使用大括號。
  • 可選的return關鍵字 - 如果主體只有一個表示式用於返回值,編譯器會自動返回值。需要大括號來指示表示式返回值。

Lambda表示式示例

使用您選擇的任何編輯器建立以下Java程式,例如,在C:\> JAVA中。

Java8Tester.java

線上演示

public class Java8Tester {
   public static void main(String args[]) {
      Java8Tester tester = new Java8Tester();
      //with type declaration MathOperation addition = (int a, int b) -> a + b;
      //with out type declaration MathOperation subtraction = (a, b) -> a - b;
      //with return statement along with curly braces MathOperation multiplication =
         (int a, int b) -> { return a * b; };
      //without return statement and without curly braces MathOperation division =
         (int a, int b) -> a / b;
         System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
         System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
         System.out.println("10 x 5 = " + tester.operate(10, 5, multiplication));
         System.out.println("10 / 5 = " + tester.operate(10, 5, division));
      //without parenthesis GreetingService greetService1 = message ->
         System.out.println("Hello " + message);
      //with parenthesis GreetingService greetService2 = (message) ->
         System.out.println("Hello " + message);
         greetService1.sayMessage("Mahesh");
         greetService2.sayMessage("Suresh");
   }

   interface MathOperation {
      int operation(int a, int b);
   }

   interface GreetingService {
      void sayMessage(String message);
   }

   private int operate(int a, int b, MathOperation mathOperation) {
      return mathOperation.operation(a, b);
   }
}

驗證結果

使用javac編譯器編譯類,如下所示:

C:\JAVA>javac Java8Tester.java

現在執行Java8Tester,如下所示:

C:\JAVA>java Java8Tester

它應該產生以下輸出:

10 + 5 = 15
10 - 5 = 5
10 x 5 = 50
10 / 5 = 2
Hello Mahesh
Hello Suresh

更新於:2020年2月24日

2K+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.