Java8的新特性--函式式介面
阿新 • • 發佈:2021-03-07
[TOC](目錄)
# 函式式介面
Lambda表示式需要介面的支援,並且介面的抽象方法還只能有一個,要麼沒法區分實現的是哪一個抽象方法了。因此Lambda表示式需要函式式介面的支援
## 什麼是函式式介面
> 介面中只有一個抽象方法的介面稱為函式式介面。
函式式介面可以使用一個註解@FunctionalInterface修飾,此註解可以檢查是否是函式式介面
## 函式式介面的使用
假設我們現在有一個需求:對一個數進行運算,什麼運算都可以。如果我們想用Lambda表示式來實現的話,我們就需要一個介面來支援,下面我們先寫一個MyFunction介面
```
@FunctionalInterface
public interface MyFunction {
public Integer getValue(Integer num);
}
```
然後我們需要一個運算的方法
```
//運算方法
public Integer operation(Integer num, MyFunction fun){
return fun.getValue(num);
}
```
測試類
```
@Test
public void test06(){
//平方運算
Integer num = operation(10,(x) -> x*x);
System.out.println(num);
//加和運算
Integer num2 = operation(100,(y) -> y+200);
System.out.println(num2);
}
```
執行結果
```
100
300
```
不管是什麼運算,我們只需要關注Lambda表示式的方法體如何實現運算就可以了。
通過以上例子發現,如果我們想用Lambda表示式來實現的話,我們就需要寫一個介面來支援,是不是也挺麻煩的,其實,一般我們常用的介面,Java8裡基本都已經給我們提供了,下面來看下Java8內建的核心介面。
## Java8內建的四大核心函式式介面
### 一、