JAVA 8 函數式接口( java.util.function 詳解)

java 8 函數式接口

簡介

函數式接口(Functional Interface)是Java 8對一類特殊類型的接口的稱呼。 這類接口只定義了唯一的抽象方法的接口,並且這類接口使用了@FunctionalInterface進行註解。在jdk8中,引入了一個新的包java.util.function, 可以是java 8 的函數式編程變得更加簡便。這個package中的接口大致分爲了以下四類:

  • Function: 接收參數,並返回結果,主要方法 R apply(T t)
  • Consumer: 接收參數,無返回結果, 主要方法爲 void accept(T t)
  • Supplier: 不接收參數,但返回結構,主要方法爲 T get()
  • Predicate: 接收參數,返回boolean值,主要方法爲 boolean test(T t)

java.util.function包中所有的接口整理:
5bb76a48e4b06fc64b0e593a.png

Function

表示一個方法接收參數並返回結果。

接收單個參數

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)

Consumer

表示一個方法接收參數但不產生返回值。

接收一個參數

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)

Supplier

返回一個結果,並不要求每次調用都返回一個新的或者獨一的結果

interface functional method 說明
Supplier<T> T get() 返回類型爲泛型T
BooleanSupplier boolean getAsBoolean() 以下三個接口,返回指定類型
IntSupplier int getAsInt()
LongSupplier long getAsLong()
DoubleSupplier double getAsDouble()

Predicate

根據接收參數進行斷言,返回boolean類型

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章