穿插說(shuō)一下,java8中關(guān)于接口修改了某些要求,比如接口可以實(shí)現(xiàn)某些方法的代碼,但是同時(shí)要求聲明方法為default
-
Consumer接口
Consumer用來(lái)做什么?
Consumer接收單個(gè)參數(shù),并且沒(méi)有返回值,主要是通過(guò)函數(shù)來(lái)執(zhí)行一些帶有副作用(設(shè)置屬性)的操作.方法:
// 接收某個(gè)對(duì)象之后執(zhí)行操作
void accept(T t);
// 先執(zhí)行當(dāng)前的accept,再執(zhí)行after的accept
default Consumer<T> andThen(Consumer<? super T> after)
-
Predicate接口
- Predicate用來(lái)做什么?
判斷輸入的對(duì)象是否滿足某個(gè)條件 - 方法:
// 判斷輸入對(duì)象是否滿足設(shè)定的判斷條件
boolean test(T t);
// 返回兩個(gè)判斷條件相與后的判斷條件
default Predicate<T> and(Predicate<? super T> other)
// 返回判斷條件的否定式
default Predicate<T> negate()
// 返回兩個(gè)判斷條件相或后的判斷條件
default Predicate<T> or(Predicate<? super T> other)
static <T> Predicate<T> isEqual(Object targetRef)
- Predicate用來(lái)做什么?
-
Function接口
- Function用來(lái)做什么?
Funcion接口通過(guò)構(gòu)造一個(gè)輸入函數(shù),輸出函數(shù)的對(duì)象,來(lái)實(shí)現(xiàn)一個(gè)在內(nèi)部計(jì)算函數(shù)的過(guò)程的接口. - 方法:
// 給定輸入?yún)?shù),通過(guò)Function對(duì)象計(jì)算輸出值
R apply(T t)
// 先執(zhí)行當(dāng)前funtion對(duì)象的apply方法,再執(zhí)行after對(duì)象的apply方法
default <V> Function<Integer, V> andThen(Function<? super Integer, ? extends V> after)
// 先執(zhí)行before對(duì)象的apply方法,再執(zhí)行當(dāng)前對(duì)象的apply方法
public <V> Function<V, Integer> compose(Function<? super V, ? extends Integer> before)
// 返回一個(gè)只會(huì)返回輸入?yún)?shù)的function對(duì)象
static <T> Function<T, T> identity()
- Function用來(lái)做什么?
- 為什么會(huì)出現(xiàn)function包?
function包是java的函數(shù)式編程相關(guān)接口,主要提供了不修改內(nèi)部狀態(tài),只用來(lái)計(jì)算或執(zhí)行一些操作的方法,所以function包能較好地解決多線程之間的鎖及并發(fā)存在的一些問(wèn)題.