前言:公司專案中大量使用了該新特性,故對此進行學習總結;
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代表乙個輸入,乙個輸出 輸入和輸出是相同型別的...