java - consumer接口

来源:趣味经验馆 2.39W

<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,对这个参数做一系列的操作,是没有返回值的。

java consumer接口

另外它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定。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);    }

热门标签