lambda表達(dá)式
主要以functionInterface 注解。 成為函數(shù)式 接口。
方法可以是有參數(shù)。參數(shù)類型可以不用寫梗顺, 編譯器會(huì)自行推算
可以是無參數(shù)。
但是只能有一個(gè)方法车摄。 jdk 1.8以后 可以有 default修飾的方法
主要的四大函數(shù) 接口
1.Consumer 類
我們來看下 源碼
accept 方法 是沒有返回值的寺谤, 該方法對(duì)傳入的單個(gè)參數(shù)進(jìn)行 操作。然后輸出
andThen 這是一個(gè)用來做鏈?zhǔn)教幚淼姆椒ㄋ辈ィ摲椒ǚ祷氐氖且粋€(gè)Consumer對(duì)象变屁,假設(shè)調(diào)用者的Consumer對(duì)象為A,輸入?yún)?shù)Consumer對(duì)象設(shè)為B意狠,那么返回的Consumer對(duì)象C的accept方法的執(zhí)行體就是A.accept()+B.accept()
accept方法
示例:
[圖片上傳失敗...(image-b88e97-1542177346379)]
andThen方法示例
[圖片上傳失敗...(image-74ad67-1542177346379)]
2.Supplier<T> 類
[圖片上傳失敗...(image-9d02bd-1542177346379)]
該類 沒有參數(shù)粟关。 返回值是T
作用, 可以當(dāng)作工廠類來調(diào)用环戈。
示例:
[圖片上傳失敗...(image-448ff0-1542177346379)]
這里T 必須要有構(gòu)造器
Function<T,R>接口
[圖片上傳失敗...(image-d3e991-1542177346379)]
[圖片上傳失敗...(image-fc40f7-1542177346379)]
[圖片上傳失敗...(image-81f5b3-1542177346379)]
T作為輸入闷板, 返回值是R
apply方法
[圖片上傳失敗...(image-b8a905-1542177346379)]
對(duì)單個(gè)對(duì)象的處理获列。兒具體的處理邏輯是在調(diào)用傳入,即傳入傳遞的是一種操作蛔垢。
andThen 方法
其實(shí)跟上面 Consumer里面的方法是一樣的, 就是在 apply方法之后 再進(jìn)行apply迫悠。
例如:
[圖片上傳失敗...(image-8803de-1542177346379)]
compose方法是先進(jìn)行func2的操作鹏漆, 再進(jìn)行func里面的操作。與andThen 方法正好是相反的创泄。
Predicate接口
java8源碼如下:
[圖片上傳失敗...(image-b08353-1542177346378)]
test()方法傳入值的進(jìn)行判斷艺玲, 返回的是boolean類型。 可以理解為 是處理參數(shù)T鞠抑,滿足什么條件饭聚。
and ()方法 這里是對(duì)傳入的值進(jìn)行第二次判斷,調(diào)用當(dāng)前的Predicate的test方法搁拙, 再調(diào)用 otherd test
方法秒梳。 可以理解為, 條件A&&條件B箕速。
negate()方法酪碘。 對(duì)當(dāng)前test()判斷的 進(jìn)行 "!"操作。如 !條件A盐茎,這樣的兴垦。
isEqual() 方法 就是對(duì)參入?yún)?shù) 進(jìn)行判斷 等于當(dāng)前條件的。如A==B 這樣的字柠。