Function接口,函数式接口
按入参返回值分类,大概分为4种类型,再加上多个入参就又多了Bi开头的两种。
有Ctrl+P的时候不懂参数列表该写啥,就先Ctrl+ALT看下入参类型的相关实现类!
一些实用的快捷键:Ctrl + P看参数列表,Ctrl + Q 看接口文档
一些单词:匿名的 anonymous; 二进制的:binary
书籍推荐:java8函数式编程

文章目录

  • 你是否很好奇函数式编程的传参到底要怎么传,接收返回值到底要用什么类型接收???
    • Stream流最常见的应用场景
    • java函数式接口印象
    • 看到一个陌生的参数列表要怎么传参
    • 匿名内部类和Lambda表达式的转化
    • Function接口的入参和返回值
    • demo
    • 其他有意义的问题

你是否很好奇函数式编程的传参到底要怎么传,接收返回值到底要用什么类型接收???

Stream流最常见的应用场景

java函数式接口印象

  • 消费型 Consumer (有入参,无返回值)
  • 提供者型 Supplier (无入参,有返回值)
  • 常见型 Function(有入参,有返回值)

上述类型的入参都是单个入参的。像BiConsumer, BiFunction这种的入参是多个入参
Bi 可以 理解为 binary,二进制的,两个的

看到一个陌生的参数列表要怎么传参

查看入参的实现类
(当时Ctrl+P查看接口的参数列表时,看到BinaryOperator是入参实在不知道要传啥参数。后来查Ctrl+alt看了BinaryOperator的实现类,才发现它可以传BIgDecimal::sum这种。其实在reduce方法处按下Ctrl+Q是可以查看jdk的接口文档的,里面有详细的使用案例)

匿名内部类和Lambda表达式的转化

利用IDE实现转换:
鼠标停在->附近按下alt+enter可以看到idea的提示,可以快捷地实现lambda表达式到匿名内部类写法的互转

Function接口的入参和返回值

demo


// Lambda表达式写法1
Stream<String> stringStream = list.stream().map(CallaboratorParamsInfo::getMerchantCode);// Lambda表达式写法2
Stream<String> stringStream = list.stream().map(callaboratorParamsInfo -> callaboratorParamsInfo.getMerchantCode());// 匿名内部类写法
Stream<String> stringStream = list.stream().map(new Function<CallaboratorParamsInfo, String>() {@Overridepublic String apply(CallaboratorParamsInfo callaboratorParamsInfo) {return callaboratorParamsInfo.getMerchantCode();}});

其他有意义的问题

  • default方法
  • 如何自定义一个函数式接口
  • stream的并行流使用

工具技巧和读文档 | 读函数式编程接口文档 | 匿名内部类 | lambda表达式 |IDEA相关推荐

  1. 项目中使用 java函数式编程_函数式编程在Java8中使用Lambda表达式进行开发

    事情起因 如果不喜欢看故事的同学,请前往下一章节. 事情起因是我打算集成Redis缓存,配置了Redis以后,发现@Cacheable注解始终不生效,折腾了大半天以后,我的心态已经崩了,决定不使用@C ...

  2. Java函数式编程(1):Lambda表达式(1)

    您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来- Java在其技术发展周期中经历过几次比较重要的变化,如果不是这几次比较重要的变化,恐怕不会有现在这样的江湖地位.个人看来,至少有两次,一是 ...

  3. 基于C++11模板元编程实现Scheme中的list及相关函数式编程接口

    前言 本文将介绍如何使用C++11模板元编程实现Scheme中的list及相关函数式编程接口,如list,cons,car,cdr,length,is_empty,reverse,append,map ...

  4. predicate java 作用_Java函数式编程接口详解之Predicate

    一.初识 Predicate是Java提供的重要的函数编程接口之一,作用主要是用于逻辑判断. 首先看看源码: @FunctionalInterface public interface Predica ...

  5. jdk8新特性(接口新特性、lambda表达式、方法引用、函数式接口、Stream流)和单例设计模式

    1.单例设计模式 1.概念: 设计模式:使用固有的流程或方式设计出来的类接口.枚举等元素 2.设计原则: 1.私有化构造方法[private.protected] 2.类中创建最终对象[唯一不能被赋值 ...

  6. java接口构造函数_Java8自定义函数式编程接口和便捷的引用类的构造器及方法

    什么是函数编程接口? 约束:抽象方法有且只有一个,即不能有多个抽象方法,在接口中覆写Object类中的public方法(如equals),不算是函数式接口的方法. 被@FunctionalInterf ...

  7. qlist length 函数讲解_读《JavaScript 轻量级函数式编程》

    夜曉宸​www.yexiaochen.com 读后感 很久之前,组内分享过函数式编程的相关内容,听完之后的感受就是和没听没什么区别.函数式编程中有许多概念,对于熟悉和见惯面向对象编程的人来说,一时半会 ...

  8. 【工具】目前几种常见的线上接口文档管理平台的比较

    文章目录 一.前言 二.接口文档在线平台 1.apizza 1.1 文档导出html 1.2 导入Postman.json和Swagger.json文件 2. YApi 2.1 源码开源&免费 ...

  9. 接口文档如何编写,接口文档快速生成工具

    正规的团队合作或者是项目对接,接口文档是非常重要的,一般接口文档都是通过开发人员写的.一个工整的文档显得是非重要.下面我总结下自己看到的优秀接口文档. 一.背景介绍 接口:API API(Applic ...

最新文章

  1. SpringCloud Feign声明式服务调用
  2. UDP转TCP隧道工具udptunnel
  3. javascript开发技巧训练_学好这些小技巧,帮你写出更好地JavaScript
  4. VS 工具-选项对话框 调试选项相关学习总结
  5. 最小生成树之prim
  6. Python数据结构与算法(六)--栈和队列
  7. element子组件中的校验_Salesforce LWC学习(十六) Validity 在form中的使用浅谈
  8. 9月16日见!vivo高管亲曝NEX 3 5G:99.6%屏占比确认
  9. stl之截取:以一段字符串截取字符串
  10. 揭开伟大架构师的秘密
  11. jdk8下载要先有Oracle账号吗,【转载】linux安装jdk8--附带oracle账号
  12. android+ios打印机,Android/iOS手机安装HP打印机的详细方法和操作步骤
  13. 解决fiddler设置手机代理后无法上网问题
  14. lvgl chart
  15. Chapter6 CMOS组合逻辑门设计
  16. Ubuntu 误删恢复
  17. 比UUID更快更安全NanoID到底是怎么实现的?(荣耀典藏版)
  18. 当我们谈论Unidbg时我们在谈什么
  19. 当你觉得生活快熬不下去时,请你读一读《活着》
  20. iOS--中文排序、全拼音排序

热门文章

  1. FPGA-篮球计分计时器的设计
  2. 南方雨季来袭,物联网助力水位监测防止洪涝灾害
  3. 插画版Kubernetes指南
  4. 免云挂机聚合易支付码支付V6.5修正版系统源码
  5. 2022年第四届河南省CCPC大学生程序设计竞赛代码+简单思路(退役战了算是,还好金了)
  6. 广域网、城域网、局域网、个人区域网的不同
  7. Unix Domain Socket
  8. 拥有这十种气质的女孩更有男人缘
  9. ROG魔霸7Plus的CPU温度与 Armoury Crate 设置问题
  10. 1252:走迷宫 2021-01-05