什么是函數式接口?自定義一個函數式接口
-
1、函數式接口是有且只有一個抽象方法的接口
-
2、Java中擁有大量函數式接口,如:java.lang.Runnable
-
3、JDK8后提供了一系列新的函數式接口,位於java.util.function
lambda語法格式:
-
(參數列表) -> 實現語句。
-
參數列表:使用逗號分隔參數,參數類型可省略,單參數括號可省略。
-
實現語句:單行直接寫,多行用{}包裹。
-
注意:lambda表達式只能實現有且只有一個抽象方法的接口,這種接口java稱為“函數式接口”。
案例:
定義只有一個抽象方法的“函數式接口”
@FunctionalInterface
public interface MathOperation {
float operator(int a, int b);
}
注解:@FunctionalInterface //通知編譯器這是函數式接口,進行抽象方法檢查
傳統方式是要創建一個Addition類繼承這個接口,然后再實現這個接口里的函數,在main函數中再實例化一個Addition對象,調用addition.operate(3,5);才能達到如下一樣的目的。
class ILambdaTest {
@Test
void testLambdaOperator() {
// 標准寫法
MathOperation add = (a, b) -> {
System.out.println("加法運算");
return a + b;
};
// 簡潔寫法
MathOperation subtruction = (a, b) -> a - b;
System.out.println("add = " + add.operator(1,3));
System.out.println("subtruction = " + subtruction.operator(1,3));
}
}