常用的函数式接口_Consumer接口和常用的函数式接口_Consumer接口的默认方法andThen

Consumer接口

java,util.function.Consumer接口则正好与Supplier接口相反,它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定

抽象方法:accept

Consumer接口中包含抽象方法void accept(T t),意为消费一个执行的数据。
使用:

package com.yang.Test.ConsumerStudy;

import java.util.function.Consumer;

/**
 * java.util.function.Consumer<T>接口则正好与Supplier接口相反
 * 它不是生产一个数据,而是消费一个数据,其数据类型由泛型指定
 * Consumer接口中包含抽象方法void accept(T t),意为消费一个指定泛型的数据。
 * Consumer接口是一个消费性接口,泛型执行什么类型,就可以使用accept方法消费什么类型的数据
 * 至于怎么消费(使用),需要自定义(输出、计算....)
 */
public class Study01 {
    /**
     * 定义一个方法
     * 方法的参数传递一个字符串的姓名
     * 方法的参数传递Consumer接口,泛型使用String
     * 可以使用Consumer接口消费字符串中的姓名
     */
    private static void method(String name, Consumer<String> consumer){
        consumer.accept(name);
    }

    public static void main(String[] args) {
        //调用method方法,传递一个姓名字符串和Consumer
        method("赵丽颖",s -> {
            //对传递的字符串进行消费
            //消费方式:直接输出
            System.out.println(s);

            //消费方式:把字符串进行反转输出
            StringBuilder stringBuilder = new StringBuilder(s);
            StringBuilder reverse = stringBuilder.reverse();
            System.out.println(reverse);
        });
    }
}

常用的函数式接口_Consumer接口的默认方法andThen

package com.yang.Test.ConsumerStudy;

import java.util.Locale;
import java.util.function.Consumer;

/**
 * Consumer接口的默认方法andThen
 * 作用:需要两个Consumer接口,可以把两个Consumer接口组合到一起,对数据进行消费
 *
 * 例如:
 * Consumer<String> con1
 * Consumer<String> con2
 * String str = "hello";
 * con1.accept(s);
 * con2.accept(s);
 * andThen连接两个Consumer 再进行消费
 * 谁写在前面谁先消费
 * con1.andThen(con2).accept(str);
 */
public class Study02 {
    //定义一个方法方法的参数传递一个字符串和两个Consumer接口,Consumer接口的泛型也是用字符串
    public static void method(String str, Consumer<String> con1, Consumer<String> con2) {
//        con1.accept(str);
//        con2.accept(str);
        //使用andThen方法把两个Consumer接口连接到一起再进行消费
        con1.andThen(con2).accept(str);
    }

    public static void main(String[] args) {
/*        //调用method方法,传递一个字符串和两个Lambda表达式
        method("hello", s -> {
            //消费方式:把字符串转换为大写输出
            System.out.println(s.toUpperCase());
        }, s -> {
            //消费方式:把字符串转换为小写
            System.out.println(s.toLowerCase());
        });*/
        method("abcde",s -> System.out.println(s.toLowerCase()),s -> System.out.println(s.toUpperCase()));
    }
}

posted @ 2022-07-20 14:35  我滴妈老弟  阅读(29)  评论(0编辑  收藏  举报