從JDK8開始java支持函數式編程,JDK也提供了幾個經常使用的函數式接口,這篇主要介紹Consumer接口。
文本介紹的順序依次爲:java
1 |
package java.util.function; |
源碼只有2個方法,也比較容易理解,咱們下面來看一下具體的使用方法。編程
1 |
package jdk8; |
下面是執行結果:less
1 |
print square : 4 |
在testAndThen()方法的執行結果能夠看到打印的順序和出現異常的狀況(third x : 1 並無輸出)
上面只是一個簡單的使用,主要爲了說明使用方式。對於Consumer的工做實踐目前還未使用,並無好的例子。函數式編程
在jdk內對Consumer的典型使用非foreach莫屬了(在 java.lang.Iterable內),下面是源碼:函數
1 |
/** |
方法接收一個Consumer對象,對this集合執行循環相同的操做。ui
TODO:除Iterable外還有不少地方使用到了Consumer,待後續使用到在添加。this
Consumer的accept只接受一個參數,那若是要是想使用多個參數要怎麼辦?jdk8又提供了一個BiConsumer接口類,該類與Consumer的區別是能夠接受2個參數。spa
jdk8還對Consumer和BiConsumer各提供了3個經常使用的相關接口類,見下表:code
類名 | 描述 |
IntConsumer | 接受單個int型參數的Consumer操做 |
DoubleConsumer | 接受單個double型參數的Consumer操做 |
LongConsumer | 接受單個long型參數的Consumer操做 |
ObjIntConsumer | 接受2個int型參數的Consumer操做,不支持andThen方法 |
ObjDoubleConsumer | 接受2個double型參數的Consumer操做,不支持andThen方法 |
ObjLongConsumer | 接受2個long型參數的Consumer操做,不支持andThen方法 |
轉載連接:http://www.sanjinbest.com/uncategorized/JAVA-8-函數式接口-Consumer/orm