函數式介面 函數式介面指的是:有且僅有一個抽象方法,但是可以有多個非抽象方法的介面(介面預設方法)。 1 @FunctionalInterface註解 該註解標記一個介面為函數式介面。 對於標註了這個註解的介面,編譯器會強制檢查該介面是否有且僅有一個抽象方法。否則會報錯。 即使不使用該註解,只要滿足 ...
函數式介面
函數式介面指的是:有且僅有一個抽象方法,但是可以有多個非抽象方法的介面(介面預設方法)。
1 @FunctionalInterface註解
該註解標記一個介面為函數式介面。
對於標註了這個註解的介面,編譯器會強制檢查該介面是否有且僅有一個抽象方法。否則會報錯。
即使不使用該註解,只要滿足函數式介面的定義,就是一個函數式介面
2 與Lambda表達式結合
函數式介面可以被隱式轉換為Lambda表達式。
如果有一個方法使用函數式介面作為參數,那麼就可以使用Lambda進行傳參。
比如線程中的Runable介面:
//匿名內部類寫法
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("內部類寫法");
}
}).start();
//lambda 寫法
new Thread(() -> System.out.println("lambda寫法")).start();
3 常用的函數式介面
JDK 1.8 之前已有的函數式介面
java.lang.Runnable
java.util.concurrent.Callable
java.util.Comparator
JDK 1.8 新增加的函數介面
//java.util.function包下
Consumer<T>
Function<T,R>
Predicate<T>
//。。。