consumer接口,java
<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
java consumer接口是什麼,讓我們一起了解一下?
Consumer接口是Java一系列函數式接口中的一個,Consumer接口是一個消費型接口,這個接口接收一個泛型的參數T,然後調用accept,對這個參數做一系列的操作,沒有返回值。
Consumer接口的定義是什麼?
@FunctionalInterfacepublic interface Consumer<T> { void accept(T t); default Consumer<T> andThen(Consumer<? super T> after) { Objects.requireNonNull(after); return (T t) -> { accept(t); after.accept(t); }; }}
而且這個接口,接收一個泛型的參數T之後,然後調用accept,對這個參數做一系列的操作,是沒有返回值的。
另外它不是生產一個數據,而是消費一個數據,其數據類型由泛型決定。Consumer接口中包含抽象方法void accept(T t),意為消費一個指定泛型的數據。Consumer接口是一個消費型接口,泛型執行什麼類型,就可以使用accept方法消費什麼類型的數據。
至於具體怎麼消費(使用)需要自定義(輸出,計算…)*/,下面我們用一個簡單的小例子:
public class p01Consumer { /*定義一個方法 方法的參數傳遞一個字符串的姓名 方法的參數傳遞consumer接口,泛型使用string可以使用Consumer接口消費字符串的姓名 */ public static void method(String name , Consumer<String> con){ con.accept(name); } public static void main(String[] args) { //調用method方法,傳遞字符串姓名,方法的另一個參數是Consumer接口,是一個函數式接口,所以可以傳遞Lambda表達式 method("趙麗穎",(name)->{ //對傳遞的字符串進行消費 //消費方式,直接輸出字符串 //System.out.println(name); //消費方式,把字符串進行反轉輸出 String reName = new StringBuffer(name).reverse().toString(); System.out.println(reName); }); }}
Consumer接口的實戰操作如下:
public static void main(String[] args) { testConsumer(); testAndThen(); } /** * 一個簡單的平方計算 */ public static void testConsumer() { //設置好Consumer實現方法 Consumer<Integer> square = x -> System.out.println("平方計算 : " + x * x); //傳入值 square.accept(2); } /** * 定義3個Consumer並按順序進行調用andThen方法 */ public static void testAndThen() { //當前值 Consumer<Integer> consumer1 = x -> System.out.println("當前值 : " + x); //相加 Consumer<Integer> consumer2 = x -> { System.out.println("相加 : " + (x + x)); }; //相乘 Consumer<Integer> consumer3 = x -> System.out.println("相乘 : " + x * x); //andThen拼接 consumer1.andThen(consumer2).andThen(consumer3).accept(1); }