JAVA 8 函數式接口--Consumer
阿新 • • 發佈:2019-04-21
沒有 caller func 擴展 cal bject ble span rgs
從JDK8開始java支持函數式編程,JDK也提供了幾個常用的函數式接口,這篇主要介紹Consumer接口。
文本介紹的順序依次為:
- 源碼介紹
- 使用實例
- jdk內對Consumer的典型使用
- 擴展類介紹
源碼介紹
1
|
package java.util.function;
|
源碼只有2個方法,也比較容易理解,我們下面來看一下具體的使用方法。
使用實例
1
|
package jdk8;
|
下面是執行結果:
1
|
print square : 4
|
在testAndThen()方法的執行結果可以看到打印的順序和出現異常的情況(third x : 1 並沒有輸出)
上面只是一個簡單的使用,主要為了說明使用方式。對於Consumer的工作實踐目前還未使用,並沒有好的例子。
jdk內對Consumer的典型使用
在jdk內對Consumer的典型使用非foreach莫屬了(在 java.lang.Iterable內),下面是源碼:
1
|
/**
|
方法接收一個Consumer對象,對this集合執行循環相同的操作。
TODO:除Iterable外還有很多地方使用到了Consumer,待後續使用到在添加。
擴展類介紹
Consumer的accept只接受一個參數,那如果要是想使用多個參數要怎麽辦?jdk8又提供了一個BiConsumer接口類,該類與Consumer的區別是可以接受2個參數。
jdk8還對Consumer和BiConsumer各提供了3個常用的相關接口類,見下表:
類名 | 描述 |
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/
JAVA 8 函數式接口--Consumer