posts - 397,comments - 0,views - 25332

如果一个方法的参数和返回值都是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   淤泥不染  阅读(67)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示