如果一个方法的参数和返回值都是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 + "。"); }); }

浙公网安备 33010602011771号