Consummer<T>函数式接口中的andThen方法

2023-11-15

    public static void main(String[] args) {
        Consumer<String> c1=msg -> System.out.println(msg.toUpperCase());
        Consumer<String> c2= msg -> System.out.println(msg.toLowerCase());
        String str = "this is world";
        c1.andThen(c2).accept(str);
    }
// consumer中的andThen 代码 
    default Consumer<T> andThen(Consumer<? super T> after) {
        Objects.requireNonNull(after);
        return (T t) -> { accept(t); after.accept(t); };
    }

函数式编程就是为了应对一些不需要关心方法名,参数名以及实现方法的场景而有的产物,函数式编程有在用,但也用的不是很明白,今天看了下源代码就感到 andThen很奇怪:

accept(t);after.accept(t); 明明是没有返回值的,但是前面为什么可以加return呢??

后来发现return返回的是一个构造Consumer对象的过程

consumer.andThen()方法解析:

        这里面是先将调用者本身执行一次accept()方法,然后再将参数中的Consumer对象(after)执行一次accept

也可以理解为:c1.andThen(c2)是将c1和c2合成一个新的c3然再执行accept(),

c3的方法逻辑是先执行c1.accept(t)逻辑,然后再执行c2.accept(t)。

c1.accept(t):是将传进来的字符串转为大写

c2.accept(t):是将传进来的字符串转为小写,注意:参数t不受c1的执行结果影响

执行结果:

THIS IS WORLD
this is world

Process finished with exit code 0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Consummer<T>函数式接口中的andThen方法 的相关文章

随机推荐

  • react学习总结

    目录 1 react生命周期 2 关于组件 className 设置的问题 3 react 中实现一些动画的效果 4 encodeURIComponent 5 react项目开发步骤推荐 6 webpack 的特色与功能 1 react生命
  • 22年菲尔兹奖获得者HUGO DUMINIL-COPIN 研究内容总结

    雨果 迪米尼 科潘获得 2022 的菲尔兹数学奖 因解决了统计物理中相变 概率理论的长期问题 特别是三维和四维问题以及二维中的不可积情况 下 雨果最显著的成果是三维和四维 Ising 模型 他与合作者解决了 80 年代以来一直存在的问题 建
  • 03使用Spring基于XML的方式注册第一个组件

    基于XML的方式注册第一个组件 开发步骤 第一步 创建Maven工程配置生成的pom xml文件 添加spring context基础依赖和junit依赖 注意根据Spring官方文档描述 Spring6需要JDK版本17 当添加Sprin
  • windows环境下启动kafka的

    1 命令 bin windows kafka server start bat config server properties
  • vs2013配置CUDA .cu文件

    1 Linker中添加相应lib 主要有cublas lib cublas device lib cuda lib cudadevrt lib cudart lib cudart static lib 2 右键项目 gt Bulid Dep
  • json转对象

    JSON parseObject方法可以实现json转化为对象 public class Test1 public static void main String args String jsonStr n code 200 n data
  • 机器学习笔试面试超详细总结(四)

    文章目录 151 Ridge回归 Lasso回归 坐标下降法求解 152 电影推荐系统是以下哪些的应用实例 153 决策树是否可以用来聚类 可以 154 什么方法最适合于在n维空间做异常点检测 155 逻辑回归和多元回归分析的不同 156
  • 人工智能芯片发展 (1

    人工智能技术随着以深度学习为核心算法的大力发展 目前已经在场景识别 语音识别等方面迅猛发展 影响人工智能的三大要素 数据 算法 算力 其中算力 是实现算法的重要基础 人工智能芯片也处于这个时代的战略至高点 目前人工智能 芯片分为三类 a A
  • 堆排序(浅谈大顶堆与小顶堆)

    什么是堆 堆是一种非线性结构 本篇随笔主要分析堆的数组实现 可以把堆看作一个数组 也可以被看作一个完全二叉树 通俗来讲堆其实就是利用完全二叉树的结构来维护的一维数组 按照堆的特点可以把堆分为大顶堆和小顶堆 大顶堆 每个结点的值都大于或等于其
  • 5 分钟,教你用 Docker 部署一个 Python 应用

    在使用传统物理机或云服务器上部署项目都会存在一些痛点 比如 项目部署速度慢 资源浪费 迁移难且扩展低 而使用 Docker 部署项目的优势包含 高效利用系统资源 服务启动更快 环境一致 迁移更加方便 本篇文章将介绍 Docker 部署一个
  • Python-Flask 视图和模板(4)

    Flask的response和request对象 一 视图 V 1 response响应对象 2 request请求对象 二 模板 1 返回模板文件 2 重定向 url for 路径反向解析 3 模板的语法 4 过滤器 5 模板复用 6 宏
  • 你们都说淘宝是最难爬的网站了?用我这个方法包你学会!

    导语 文章教程发了蛮多 经常会碰到一个问题 淘宝怎么爬的啊 它反爬机制好难搞啊 能不能出一期教程爬一下淘宝 今天就教大家如何采集淘宝数据并实现数据分析 今天就给大家带来一个淘宝商品数据小爬虫吧 顺便按老规矩把抓取到的数据可视化一波 废话不多
  • 【ABAP系列】SAP DOI技术中I_OI_SPREADSHEET接口的使用

    公众号 SAP Technical 本文作者 matinal 原文出处 http www cnblogs com SAPmatinal 原文链接 ABAP系列 SAP DOI技术中I OI SPREADSHEET接口的使用 前言部分 大家可
  • pb filecopy文件到服务器,怎样在PB中实现文件的拷贝与删除 (转)

    怎样在PB中实现文件的拷贝与删除 转 more 怎样在PB中实现的拷贝与删除 可借助外部 可用函数实现 1 文件拷贝 函数声明 FUNCTION boolean CopyFileA ref string cfrom ref string c
  • ffmpeg webm 提取_ffmpeg简单使用教程 转码、压制、提取、截取、合并、录屏等

    1 查看帮助文档 ffmpeg是一个开源的音视频转码工具 本文是自己学习ffmpeg使用方式的一个笔记 将ffmpeg命令行工具加入环境变量之后 输入ffmpeg h打印帮助文档 PS C Users mudssky Desktop gt
  • CheckStyle 自定义编码规范

    CheckStyle能够帮助程序员检查代码是否符合制定的规范 通过将CheckStyle的检查引入到项目构建中 可以强制让项目中的所有的开发者遵循制定规范 而不是仅仅停留在纸面上 如果发现代码违反了标准 比如类名未以大写开头 单个方法超过了
  • 解决Unity新建脚本时MonoBehaviour无法继承不变绿

    解决Unity新建脚本时MonoBehaviour无法继承不变绿不自动补全 问题 有很多初学开发的小朋友发现下载unity后 在unity新建脚本时发现脚本继承MonoBehaviour是还是灰色的 这是因为你在unity中没有把Visua
  • 数据挖掘导论 复习一(介绍+数据预处理方法+定性归纳)

    数据挖掘 数据库 机器学习 算法 经验 模型 机器学习任务 分类 回归 聚类 KMeans DCSAN 层次聚类 数据降维 数据预处理 常用分类器 KNN 贝叶斯 逻辑回归 决策树 随机森林 本书将介绍数据挖掘与数据库知识发现的基本知识 以
  • 拔电源磁盘变成只读Read-only file system

    拔电源磁盘变成只读Read only file system 问题 查询 解决 问题 搭建openwrt的过程中 由于机器没有关机键 而且没有进行后台命令关机 直接拔电源之后 重启 任何操作都提示只读状态 那么这个时候什么都操作不了 无奈只
  • Consummer<T>函数式接口中的andThen方法

    public static void main String args Consumer