如果一个方法的参数和返回值都是Consumer类,那么就可以实现效果:消费的数据的时候,首先做一个操作,然后

在做一个操作,实现组合。而这个方法就是Consumer 接口中的default方法andThen 。下面是JDK的源代码

备注:java.util.Objects 的requireNonNull 静态方法将会在参数为null时主动抛出NullPointerException 异常。这省去了重复编写if语句和抛出空指针异常的麻烦。

实现:

public static void method(String s, Consumer<String> con1, Consumer<String> con2){
//        con1.accept(s);
//        con2.accept(s);
        con1.andThen(con2).accept(s);
    }

    public static void main(String[] args) {

        method("Hello",
                (t)-> {
                    System.out.println(t.toUpperCase());
                },
                (t)->{
                    System.out.println(t.toLowerCase());
                });

    }

 

 

 

 

 

 

 

常用函数式接口_Consumer接口练习_字符串拼接输出

下面的字符串数组当中存有多条信息,请将格式姓名:xx,性别:xx,的格式将信息打印出来

要求打印姓名的动作作为第一个Consumer接口的Lambda实例将打印的性别作为第二个Consumer接口实例

将两个Consumer接口按照顺序进行拼接到一起

实现:

  public static void printInfo(String[] arr, Consumer<String> con1, Consumer<String> con2) {

        for (String message : arr) {
            con1.andThen(con2).accept(message);
        }

    }

    public static void main(String[] args) {
        String[] arr = { "迪丽热巴,女", "古力娜扎,女", "马尔扎哈,男" };
        printInfo(arr, (message) -> {
            String name = message.split(",")[0];
            System.out.print("姓名:" + name);
        }, (message) -> {
            String age = message.split(",")[1];
            System.out.println("。年龄" + age + "。");
        });
    }

 

 

posted on 2022-07-20 15:12  淤泥不染  阅读(77)  评论(0)    收藏  举报