JDK1 8 函式式介面

2021-10-08 19:03:50 字數 2747 閱讀 9474

前言:公司專案中大量使用了該新特性,故對此進行學習總結;

consumer消費型介面

之所以叫做消費型按照我的理解:消費(邏輯處理)傳入的資料;

抽象方法: void accept(t t),接收乙個引數進行消費,但無需返回結果。

介面.accept(x)

意思就是將x的引數,帶入到介面裡去執行;

預設方法:andthen(consumer<? super t> after)

將前面某某.accept(t t)執行完的結果,作為引數帶入到andthen裡再去執行;

/**

* 利用accept傳入引數去執行,將資料put放入map中

* andthen負責增強它,在accpect執行完後,還可以帶著結果再去執行andthen,在這裡負責列印

*/public

static

void

buildandprintlist()

);};

consumer

> printresult = m -

>);

};consumer.

andthen

(printresult)

.accept

(map)

;}

supplier: 提供型介面

抽象方法:t get(),無引數,有返回值。

理解為:不需要入參,做邏輯後返回結果,所以叫做提供型;

/**

* supplier供給型介面

* 沒有入參,但有返回值(因為沒有入參,

* 但又提供結果,所以稱為供給型介面)

*/public

static

void

suppliertest()

; demo order = ordersupplier.

get();

system.out.

println

(order)

;}

function: 函式型介面

預設方法 compose(function<? super v, ? extends t> before) 執行之前

andthen(function<? super r, ? extends v> after) 執行之後

/**

* compose在執行真正發起function之前,

* 先執行一次,然後將結果傳遞

* andthen是執行完真正發起function之後執行,

* 然後將結果傳遞;

*/public

static

void

functiontest()

; function

andthenfunction = o -

>

; function

compose = o -

>

;/**

* updatedorder 是起點

* 那麼理解為傳入引數x,到updatedorder函式式介面執行,並返回結果;

* 加了compose,代表比updatedorer先執行,所以"起點"已經被覆蓋了

* 加了andthen,代表比updatedorder後執行;

*/updatedorder.

compose

(compose)

.andthen

(andthenfunction).(

newdemo

("起點"))

;}因為先執行compose,所以「起點」被覆蓋了

列印結果

demo

(name=測試compose)

demo

(name=測試compose)

demo

(name=測試andthen)

例二:

public

static

void

computetest()

bifunction:函式式介面 t,u都做為入參,r作為返回值

預設方法 andthen(function<? super r, ? extends v> after)

bifunction 比較function 多了乙個入參;其餘用法一樣

public

static

void

bifunctiontest

(bifunction

order)

public

static

void

main

(string[

] args));

}

public

static demo ordertest

(string name,function

order)

public

static

void

main

(string[

] args)

函式式介面,按照我的理解就是可以傳入lambda表示式作為引數去呼叫其他方法,可以簡化**,並且可以前置或者後置再進行一些處理;

JDK1 8 函式式介面

介面只有乙個抽象方法,稱之為函式式介面 該介面被 functionalinte ce修飾 functionalinte ce public inte ce comparator 表示式aaa system.out.println thread.currentthread getname 執行緒啟動了...

JDK1 8新特性函式式介面

對於只有乙個抽象方法的介面,需要這種介面的物件,就可以提供乙個lambda表示式。這種介面稱為函式式介面 functional inte ce 在定義函式式介面的時候可以加入 functionalinte ce註解來修飾該介面 documented retention retentionpolicy...

JDK1 8新特性 函式式介面

只有乙個抽象方法 object類中的方法除外 的介面是函式式介面 supplier代表乙個輸出 consumer代表乙個輸入 biconsumer代表兩個輸入 function代表乙個輸入,乙個輸出 一般輸入和輸出是不同型別的 unaryoperator代表乙個輸入,乙個輸出 輸入和輸出是相同型別的...