函數式接口(Functional Interface)是Java 8對一類特殊類型的接口的稱呼。 這類接口只定義了惟一的抽象方法的接口,而且這類接口使用了@FunctionalInterface
進行註解。在jdk8中,引入了一個新的包java.util.function
, 能夠是java 8 的函數式編程變得更加簡便。這個package中的接口大體分爲了如下四類:java
R apply(T t)
void accept(T t)
T get()
boolean test(T t)
java.util.function包中全部的接口整理:
編程
表示一個方法接收參數並返回結果。app
Interface | functional method | 說明 |
---|---|---|
Function<T,R> | R apply(T t) | 接收參數類型爲T,返回參數類型爲R |
IntFunction<R> | R apply(int value) | 如下三個接口,指定了接收參數類型,返回參數類型爲泛型R |
LongFunction<R> | R apply(long value) | |
Double<R> | R apply(double value) | |
ToIntFunction<T> | int applyAsInt(T value) | 如下三個接口,指定了返回參數類型,接收參數類型爲泛型T |
ToLongFunction<T> | long applyAsLong(T value) | |
ToDoubleFunction<T> | double applyAsDouble(T value) | |
IntToLongFunction | long applyAsLong(int value) | 如下六個接口,既指定了接收參數類型,也指定了返回參數類型 |
IntToDoubleFunction | double applyAsLong(int value) | |
LongToIntFunction | int applyAsLong(long value) | |
LongToDoubleFunction | double applyAsLong(long value) | |
DoubleToIntFunction | int applyAsLong(double value) | |
DoubleToLongFunction | long applyAsLong(double value) | |
UnaryOperator<T> | T apply(T t) | 特殊的Function,接收參數類型和返回參數類型同樣 |
IntUnaryOperator | int applyAsInt(int left, int right) | 如下三個接口,制定了接收參數和返回參數類型,而且都同樣 |
LongUnaryOperator | long applyAsInt(long left, long right) | |
DoubleUnaryOperator | double applyAsInt(double left, double right) |
interface | functional method | 說明 |
---|---|---|
BiFunction<T,U,R> | R apply(T t, U u) | 接收兩個參數的Function |
ToIntBiFunction<T,U> | int applyAsInt(T t, U u) | 如下三個接口,指定了返回參數類型,接收參數類型分別爲泛型T, U |
ToLongBiFunction<T,U> | long applyAsLong(T t, U u) | |
ToDoubleBiFunction<T,U> | double appleyAsDouble(T t, U u) | |
BinaryOperator<T> | T apply(T t, T u) | 特殊的BiFunction, 接收參數和返回參數類型同樣 |
IntBinaryOperator | int applyAsInt(int left, int right) | |
LongBinaryOperator | long applyAsInt(long left, long right) | |
DoubleBinaryOperator | double applyAsInt(double left, double right) |
表示一個方法接收參數但不產生返回值。函數式編程
interface | functional method | 說明 |
---|---|---|
Consumer<T> | void accept(T t) | 接收一個泛型參數,無返回值 |
IntConsumer | void accept(int value) | 如下三個類,接收一個指定類型的參數 |
LongConsumer | void accept(long value) | |
DoubleConsumer | void accept(double value) |
interface | functional method | 說明 |
---|---|---|
BiConsumer<T,U> | void accept(T t, U u) | 接收兩個泛型參數 |
ObjIntConsumer<T> | void accept(T t, int value) | 如下三個類,接收一個泛型參數,一個指定類型的參數 |
ObjLongConsumer<T> | void accept(T t, long value) | |
ObjDoubleConsumer<T> | void accept(T t, double value) |
返回一個結果,並不要求每次調用都返回一個新的或者獨一的結果函數
interface | functional method | 說明 |
---|---|---|
Supplier<T> | T get() | 返回類型爲泛型T |
BooleanSupplier | boolean getAsBoolean() | 如下三個接口,返回指定類型 |
IntSupplier | int getAsInt() | |
LongSupplier | long getAsLong() | |
DoubleSupplier | double getAsDouble() |
根據接收參數進行斷言,返回boolean類型spa
interface | functional method | 說明 |
---|---|---|
Predicate<T> | boolean test(T t) | 接收一個泛型參數 |
IntPredicate | boolean test(int value) | 如下三個接口,接收指定類型的參數 |
LongPredicate | boolean test(long value) | |
DoublePredicate | boolean test(double value) | |
BiPredicate<T,U> | boolean test(T t, U u) | 接收兩個泛型參數,分別爲T,U |