首页 > 其他分享 >常用的函数式接口_Consumer接口与常用的函数式接口_Consumer接口的默认方法andThen

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

时间:2022-10-11 10:14:01浏览次数:54  
标签:andThen 消费 函数 接口 String Consumer name

3.3Consumer接口

  java.util.function.Consumer<T>

    接口则正好与Supplier接口相反,它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定。 消费者<T`接口则正好与供应商接口相反,它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定。

    Supplier :生产数据; Consumer:消费数据

    Consumer接口是一个消费型接口,泛型执行什么类型,就可以使用accpt方法消费什么类型的数据

    具体这么消费(使用),需要自定义(输出,计算.....)

  抽象方法:accpt;

  Consumer接口中包含抽象方法 void accpt(T t),意为消费一个指定泛型的数据

 

 Consumer基本使用      

 1 package day01.Demo01_Day016;
 2 
 3 import java.util.function.Consumer;
 4 
 5 /*
 6      java.util.function.Consumer<T>
 7     接口则正好与Supplier接口相反,它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定。 消费者<T>接口则正好与供应商接口相反,
 8         它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定
 9         Consumer接口中包含抽象方法 void accpt(T t),意为消费一个指定泛型的数据
10          Consumer接口是一个消费型接口,泛型执行什么类型,就可以使用accpt方法消费什么类型的数据
11 
12     具体这么消费(使用),需要自定义(输出,计算.....)
13  */
14 public class Demo01Consumer {
15 
16     /*
17        定义一个方法
18        方法的参数传递一个字符串的姓名
19        方法的参数传递Consumer接口,泛型使用String
20        可以使用Consumer接口消费字符串的姓名
21      */
22     public static void method(String name, Consumer<String> con){
23         con.accept(name);
24     }
25 
26     public static void main(String[] args) {
27         //调用method方法,传递字符串姓名,方法的另一个参数是Consumer接口,是一个函数式接口,所以可以传递Lambda表达式
28         method("莫凡",(String name)->{
29             //对传递的字符串进行消费
30             //消费方式:直接输出字符串
31             System.out.println(name);
32 
33             //消费方式:把字符串进行反转输出
34             String mo = new StringBuffer(name).reverse().toString();
35             System.out.println(mo);
36         });
37     }
38 }

 

默认方法:andThen

  andThen作用:它可以将两个Consumer接口连接到一起,也可以说组合到一起

  下面就是andThen jdk源码

  default Consumer<T> andThen(Consumer<? super T> after) {
        Objects.requireNonNull(after);
        return (T t) -> { accept(t); after.accept(t); };
    }

  andThen方法不管有多少个Consumer接口,可以一直往后累加

 1 package day01.Demo01_Day016;
 2 /*
 3     Consumer接口的默认方法andThen
 4     作用:需要两个Consumer接口,可以将两个Consumer接口组合到一起,在对数据进行消费
 5 
 6     例如:
 7     Consumer<String> con1
 8     Consumer<String> con2
 9     String s = "hello";
10     con1.accept(s);
11     con2.accept(s);
12     连接两个consumer接口  在进行消费
13     con1.andThen(con2).accept(s);:谁写谁先消费
14  */
15 import java.util.function.Consumer;
16 
17 public class Demo02Consumer {
18    // 定义一个方法 方法的参数传递一个字符串和两个Consumer接口方法的参数传递Consumer接口,泛型使用String
19     public static void meoth(String name, Consumer<String>con1,Consumer<String>con2){
20         //con1.accept(name);
21         //con2.accept(name);
22         //使用andThen方法,把两个Consumer接口连接到一起,消费数据
23         con1.andThen(con2).accept(name);//con1连接con2,先执行con1消费数据再执行con2消费数据
24     }
25     public static void main(String[] args) {
26         //调用method方法,传递一个字符串两个lambda表达式
27         meoth("quanzhifashi",
28                 (t)->{
29                 //消费方式:把字符串转换为大写输出
30                     System.out.println(t.toUpperCase());
31                 },
32                 (t)->{
33                     //消费方式:把字符串转换为小写输出
34                     System.out.println(t.toLowerCase());
35                 });
36     }
37 }

 

标签:andThen,消费,函数,接口,String,Consumer,name
From: https://www.cnblogs.com/x3449/p/16778282.html

相关文章

  • 获取图片中的图表数据并拟合函数
    获取数据在看论文或说明手册遇到图表时,常遇到无法获取源数据或曲线的情况。以下使用WebPlotDigitizer在线工具通过像素级坐标标定并取点取数。WebPlotDigitizer在线工具......
  • 函数理论部分
    今日内容概要函数参数名称空间与作用域名字的查找顺序今日内容详细函数参数1.形式参数 函数定义阶段括号内填写的参数形参2.实际参数 函数调用阶段括号内填写......
  • SpringBoot-JavaMailSender接口实战
    相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送,在SpringBoot的Starter模块中也为此提供了自动化配置。下面通过实例来讲解如......
  • 函数小节汇总
    目录函数参数之位置参数默认参数可变长参数名称空间名称空间存活周期及作用范围(域)名字的查找顺序查找顺序案例目录内容详解函数参数之位置参数"""当子代码......
  • 函数2
    今日内容函数参数之位置参数位置形参 函数定义阶段括号内从左往右依次填写变量名deffunc1(a,b,c):pass位置实参 函数调用阶段依次从左往右填写的数据值 ......
  • 函数参数(默认参数/关键字参数/位置参数/可变长参数)名称空间及作用域
    目录今日内容概要1.函数参数位置参数:默认参数/关键字参数可变长参数1.可变长形参2.可变长实参命名关键字传参名称空间及作用域名字查找顺序查找顺序案例练习题及答案今日......
  • 标签模板和标签函数
    标签模板和标签函数标签模板标签模板是提取出普通字符串与变量,交由标签函数处理letlesson='css';letweb='后盾人';tag`访问${web}学习${lesson}前端知识`;f......
  • Go语言的接口和Rust的Trait的对比
    go语言的接口是鸭子的方式,即struct本身拥有的方法如果包含某个接口里定义的所有方法声明,则认为这个struct实现了该接口,举例子:typeAstruct{Faceint}//A结构体......
  • python中函数教程
    函数的基本概念1.什么是函数?函数相当于一种工具,就是把一串代码装到一起,我们下次需要用的这个功能的时候可以直接使用函数相当于是工具(具有一定功能)不用函数修理工需......
  • 函数与名称空间
    今日内容概要函数参数之位置参数'''补充:当子代码只有一行并且很简单的情况下可以直接在冒号后编写不用换行'''位置形参函数定义阶段括号内从左到右依次填写变......