函數式接口
只包含一個抽象方法的接口,稱爲函數式接口。
你可以通過 Lambda 表達式來創建該接口的對象。(若 Lambda 表達式拋出一個受檢異常,那麼該異常需要在目標接口的抽象方法上進行聲明)。
我們可以在任意函數式接口上使用 @FunctionalInterface 註解,這樣做可以檢查它是否是一個函數式接口,同時 javadoc 也會包含一條聲明,說明這個接口是一個函數式接口
@FunctionalInterface
public interface IMyNumCalculation<T1, R> {
public R calculation(T1 t1, T1 t2);
// public R calculationTest(T1 t1, T2 t2); @FunctionalInterface 修飾只能有一個抽象方法
}
Java 內置四大核心函數式接口
函數式接口 | 參數類型 | 返回類型 | 用途 |
Consumer<T> 消費型接 | T | void | 對類型爲T的對象應用操 作,包含方法: void accept(T t) |
Supplier<T> 供給型接口 |
無 | T | 返回類型爲T的對象,包 含方法:T get(); |
Function<T, R> 函數型接口 | T | R | 對類型爲T的對象應用操 作,並返回結果。結果 是R類型的對象。包含方 法:R apply(T t); |
Predicate<T> 斷定型接口 | T | boolean | 確定類型爲T的對象是否 滿足某約束,並返回 boolean 值。包含方法 boolean test(T t); |
Java 內置其他函數式接口
函數式接口 | 參數類型 | 返回類型 | 用途 |
BiFunction<T, U, R> | T, U | R | 對類型爲 T, U 參數應用 操作,返回 R 類型的結 果。包含方法爲 R apply(T t, U u); |
UnaryOperator<T> (Function子接口) | T | T | 對類型爲T的對象進行一 元運算,並返回T類型的 結果。包含方法爲 T apply(T t); |
BinaryOperator<T> (BiFunction 子接口) | T, T | T | 對類型爲T的對象進行二 元運算,並返回T類型的 結果。包含方法爲 T apply(T t1, T t2); |
BiConsumer<T, U> | T, U | void | 對類型爲T, U 參數應用 操作。包含方法爲 void accept(T t, U u) |
ToIntFunction<T> ToLongFunction<T> ToDoubleFunction<T | T |
int long double |
分 別 計 算 int 、 long 、 double、值的函數 |
IntFunction<R> LongFunction<R> DoubleFunction<R> |
int long doubl |
R | 參數分別爲int、long、 double 類型的函數 |