函数式编程:告诉他的功能是什么,而不是告诉他怎么做

命令式编程:怎么去做

函数式编程:不需要关注细节,利用系统已经有的API

使用jdk8自带函数接口的好处
函数接口减少接口定义
函数式接口链式操作

方法引用

 // 方法引用Consumer<String> consumer = s -> System.out.println(s);Consumer<String> consumer2 = System.out::println;consumer.accept("fffffffffffffffff");consumer2.accept("fffffffffffffffff");

JDK默认会把当前实例传入到非静态方法中,参数名为this,位置是第一个

类型推断

变量引用
lambda表达式 – 匿名内部类 final

注意:参数传的是值,会有二义性,所以用final;是一个“坑”

级联表达式和科里化


import java.util.function.Function;/*** 级联表达式和柯里化* 柯里化:把多个参数的函数转换为只有一个参数的函数* 柯里化的目的:函数标准化* 高阶函数:就是返回函数的函数*/
public class CurryDemo {public static void main(String[] args) {// 实现了x+y的级联表达式Function<Integer, Function<Integer, Integer>> fun = x -> y -> x+ y;System.out.println(fun.apply(2).apply(3));Function<Integer, Function<Integer, Function<Integer, Integer>>> fun2 = x -> y -> z -> x+ y + z;System.out.println(fun2.apply(2).apply(3).apply(4));int[] nums = { 2, 3, 4 };Function f = fun2;for (int i = 0; i < nums.length; i++) {if (f instanceof Function) {Object obj = f.apply(nums[i]);if (obj instanceof Function) {f = (Function) obj;} else {System.out.println("调用结束:结果为" + obj);}}}}
}

柯里化:把多个参数的函数转换为只有一个参数的函数
柯里化的目的:函数标准化

java值引用

WebFlux响应式编程基础之 2 函数式编程 工具jclasslib bytecode viewer相关推荐

  1. spark编程基础--2.4函数式编程基础

    foreach遍历操作 映射操作map,flatmap 过滤操作filter 规约操作 reduce,fold方法 拆分操作partition,groupedBy,grouped,sliding Sc ...

  2. Spring:Webflux响应式编程

    目录 简介 响应式编程 Reactor 信号 操作符 SpringWebflux 执行流程和API 注解实现SpringWebflux 说明:基于atguigu学习笔记. 简介 Webflux是 Sp ...

  3. springboot 使用webflux响应式开发教程(一)

    什么是webFlux 左侧是传统的基于Servlet的Spring Web MVC框架,右侧是5.0版本新引入的基于Reactive Streams的Spring WebFlux框架,从上到下依次是R ...

  4. springboot 使用webflux响应式开发教程(二)

    本篇是对springboot 使用webflux响应式开发教程(一)的进一步学习. 分三个部分: 数据库操作 webservice websocket 创建项目,artifactId = tradin ...

  5. 【Java】基础36:函数式编程

    现在直播一直都很火,今天我们就用Java代码简单地模拟一个直播案例,以此来一步步说明什么叫函数式编程. 不要看这个名字好像挺难懂的样子,其实很简单,两分钟时间即可看完. 一.直播间案例 现在有一个直播 ...

  6. SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理

    SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理 本文连接 简介 SIGIA_4P 网址 a. 课程OKR Objectives and ...

  7. 高阶函数||编程范式: 命令式编程/声明式编程 || 编程范式: 面向对象编程(第一公民:对象)/函数式编程(第一公民:函数)

    编程范式: 命令式编程/声明式编程 编程范式: 面向对象编程(第一公民:对象)/函数式编程(第一公民:函数) 高阶函数 filter/map/reduce filter中的回调函数有一个要求: 必须返 ...

  8. WebFlux响应式编程基础之 4 reactive stream 响应式流

    reactive stream 响应式流 - 简而言之,就是多了一个沟通的渠道 发布订阅者 背压 交流 Reactive Stream主要接口 java.util.concurrent.Flow 源码 ...

  9. Spring WebFlux 响应式编程学习笔记(一)

    各位Javaer们,大家都在用SpringMVC吧?当我们不亦乐乎的用着SpringMVC框架的时候,Spring5.x又悄(da)无(zhang)声(qi)息(gu)的推出了Spring WebFl ...

最新文章

  1. SQL 查询总是先执行SELECT语句吗?你们都错了!
  2. 基于PyTorch的GAN框架TorchGAN:用架构级API轻松定制GAN项目
  3. 【转摘】如何得心应手的玩转Excel
  4. 软件项目开发过程中主要遇到的核心问题小结
  5. Java IO: 字符流的Piped和CharArray
  6. Java:月份的中英文转换
  7. GotoAndPlay 图论
  8. 直指Adobe的龌龊行径
  9. IE9 表格错位bug
  10. [linux]centos7.4上升级python2版本到python3.6.5 【安装双版本,默认python3】
  11. 人肉搜索将被禁止,大家要保护好自己的个人信息!
  12. Git查询一定时间范围团队代码提交日志
  13. 微信小程序根据用户当前位置并打开地图选择周边地址,完成外卖地址选择并计算距离
  14. eovs实训报告总结心得_实训报告心得体会范文大全
  15. 爬虫入门到放弃系列07:js混淆、eval加密、字体加密三大反爬技术
  16. Linux数据库管理与应用
  17. 2D横版游戏角色素材可商用
  18. 网页源文件星号怎么显示_【亲测实用】网页隐藏密码查看方法
  19. 虚荣登陆显示无法连接服务器,虚荣服务器连接不上怎么办?连接服务器解决办法...
  20. ubuntu 22.04 通过xmodmap修改键盘映射

热门文章

  1. Mybatis一级缓存、整合第三方缓存ehcache、Mybatis二级缓存
  2. Storm对DRPC权限控制Version1.0.1
  3. linux top 上次更新到现在的cpu时间占用百分比,使用top命令分析linux系统性能的详解...
  4. echarts map 点击地图区域变色_pyecharts 地图可视化
  5. 跨路由器 网段访问rtsp_实验演示:三层交换机与路由器对接
  6. python 打开excel并在屏幕上呈现_excel-检查文件是否在Python中打开
  7. JavaScript原型与原型链
  8. 项目中记录影响性能的缓慢数据库查询
  9. 《javascript高级程序设计》读书笔记1
  10. zt:tcpdump抓包对性能的影响