java consumer接口是什么,讓我們一起了解一下?
Consumer接口是Java一系列函數(shù)式接口中的一個(gè),Consumer接口是一個(gè)消費(fèi)型接口,這個(gè)接口接收一個(gè)泛型的參數(shù)T,然后調(diào)用accept,對(duì)這個(gè)參數(shù)做一系列的操作,沒(méi)有返回值。
Consumer接口的定義是什么?
@FunctionalInterface public?interface?Consumer?{ ? ???? ????void?accept(T?t); ? ????default?Consumer ?andThen(Consumer?super?T>?after)?{ ????????Objects.requireNonNull(after); ????????return?(T?t)?->?{?accept(t);?after.accept(t);?}; ????} }
而且這個(gè)接口,接收一個(gè)泛型的參數(shù)T之后,然后調(diào)用accept,對(duì)這個(gè)參數(shù)做一系列的操作,是沒(méi)有返回值的。
另外它不是生產(chǎn)一個(gè)數(shù)據(jù),而是消費(fèi)一個(gè)數(shù)據(jù),其數(shù)據(jù)類型由泛型決定。Consumer接口中包含抽象方法void accept(T t),意為消費(fèi)一個(gè)指定泛型的數(shù)據(jù)。Consumer接口是一個(gè)消費(fèi)型接口,泛型執(zhí)行什么類型,就可以使用accept方法消費(fèi)什么類型的數(shù)據(jù)。
至于具體怎么消費(fèi)(使用)需要自定義(輸出,計(jì)算…)*/,下面我們用一個(gè)簡(jiǎn)單的小例子:
public?class?p01Consumer?{ ????/*定義一個(gè)方法 ????方法的參數(shù)傳遞一個(gè)字符串的姓名 ????方法的參數(shù)傳遞consumer接口,泛型使用string可以使用Consumer接口消費(fèi)字符串的姓名 ????*/ ????public?static?void?method(String?name?,?Consumer?con){ ????????con.accept(name); ????} ????public?static?void?main(String[]?args)?{ ????????//調(diào)用method方法,傳遞字符串姓名,方法的另一個(gè)參數(shù)是Consumer接口,是一個(gè)函數(shù)式接口,所以可以傳遞Lambda表達(dá)式 ????????method("趙麗穎",(name)->{ ????????????//對(duì)傳遞的字符串進(jìn)行消費(fèi) ????????????//消費(fèi)方式,直接輸出字符串 ????????????//System.out.println(name); ????????????//消費(fèi)方式,把字符串進(jìn)行反轉(zhuǎn)輸出 ????????????String?reName?=?new?StringBuffer(name).reverse().toString(); ????????????System.out.println(reName); ????????}); ????} }
Consumer接口的實(shí)戰(zhàn)操作如下:
public?static?void?main(String[]?args)?{ ????????testConsumer(); ????????testAndThen(); ????} ????/** ?????*?一個(gè)簡(jiǎn)單的平方計(jì)算 ?????*/ ????public?static?void?testConsumer()?{ ????????//設(shè)置好Consumer實(shí)現(xiàn)方法 ????????Consumer?square?=?x?->?System.out.println("平方計(jì)算?:?"?+?x?*?x); ????????//傳入值 ????????square.accept(2); ????} ????/** ?????*?定義3個(gè)Consumer并按順序進(jìn)行調(diào)用andThen方法 ?????*/ ????public?static?void?testAndThen()?{ ????????//當(dāng)前值 ????????Consumer ?consumer1?=?x?->?System.out.println("當(dāng)前值?:?"?+?x); ????????//相加 ????????Consumer ?consumer2?=?x?->?{?System.out.println("相加?:?"?+?(x?+?x));?}; ????????//相乘 ????????Consumer ?consumer3?=?x?->?System.out.println("相乘?:?"?+?x?*?x); ????????//andThen拼接 ????????consumer1.andThen(consumer2).andThen(consumer3).accept(1); ????}
以上就是小編今天的分享了,希望可以幫助到大家。