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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP