函數(shù)式接口的定義: 只有一個(gè)抽象方法的接口。
- 接口
- 只有一個(gè)抽象方法并不表示只有一個(gè)方法,java8中支持在接口中實(shí)現(xiàn)方法(默認(rèn)方法),此類(lèi)方法不是抽象方法,所以不計(jì)算在內(nèi)
用途:個(gè)人理解這個(gè)功能是伴隨 lambda 表達(dá)式同時(shí)誕生,在lambda表達(dá)式中可以很方便的使用函數(shù)式接口。通過(guò)一段代碼說(shuō)明:
package com.ape.java8.lambda;
public class FunctionalInterface {
public static void main(String[] args) {
Double[] datas = {1.0, 2.0, 3.0, 4.0};
FunctionalInterface test = new FunctionalInterface();
//加法
double addRes = test.calculate(datas, params -> {
double i = 0.0;
for (Double param : params) {
i += param;
}
return i;
});
//乘法
double multiplyRes = test.calculate(datas, params -> {
double i = 1.0;
for (Double param : params) {
i *= param;
}
return i;
});
System.out.println("加法: " + addRes);
System.out.println("乘法: " + multiplyRes);
}
//當(dāng)參數(shù)為函數(shù)式接口時(shí),由于只有一個(gè)抽象方法,便可以在調(diào)用時(shí)采用lambda實(shí)現(xiàn)此方法
public double calculate(Double[] datas, Calculator calculator) {
return calculator.execute(datas);
}
}
@java.lang.FunctionalInterface
interface Calculator {
Double execute(Double... params);
}
通過(guò)代碼可以看出,通過(guò)函數(shù)式接口可以讓代碼有很大的靈活性,在使用時(shí)再定義具體的實(shí)現(xiàn)。
以上代碼即如果為:
加法: 10.0
乘法: 24.0