| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> Java8 中的函数式接口 -> 正文阅读 |
|
[JavaScript知识库]Java8 中的函数式接口 |
函数式编程是一种思想,也是一种编程理念。知乎上有个答主我觉得回答的 很好,不了解的可以看看。什么是函数式编程思维? - 知乎 我们更关注于数据的映射。也就是我们数据中,怎么从 A 到 B 的这部分逻辑。 @FunctionalInterface注解如果你想自己定义个新的函数式接口,强烈建议你加上*@FunctionalInterface* 注解。可以更好地揭示我们定义这个接口的意思,同时也可以让编译器帮助我们检查接口定义的正确与否。在任何情况下,我们将一个接口只有一个抽象方法的接口都认为是函数是接口。这样的接口实现,才可以被看成是 lambda 的表达式。可能你会说,不对啊,明明我看到很多函数式接口是包含了多个方法的。这里需要说明一点的是,函数式接口只能有一个抽象方法,但是可以有多个默认实现的方法。 最简单的函数式接口通常情况下,我们满足数据的映射,那就是输入一个数据,映射(对应)输出一个数据。
比如,我们调用Map 方法中
当然也可以采用冒号的语法糖
函数式接口含有一个
其中第一个函数表达式是,将对象转换为字符串,第二个则是对字符串加上双引号。 基础数据类型的函数表达式在 JDK 的 Function 包下的有很多基础类型的函数方法接口,但是这些接口都不是可以直接使用的,都需要自己实现。
下面让我们根据一个输入 Short 然后输出 Byte 数据类型,来说明用法。
比如,我们实现如下的逻辑,输入一个 short 类型的数组,然后每个元素都应用我们定义函数式方法实现。
然后 每个元素的逻辑,通过 lambda 来具体实现。比如,每个 将每个 short 类型都乘以 2 再转换成 Byte。
二元输入参数的函数 Two-Arity Function Specializations也就是输入两个不同的参数,输出一个指定数据类型的函数。在 JDK 中,带有 Bi 名称的就是类型。比如BiFunction, ToDoubleBiFunction, ToIntBiFunction, and ToLongBiFunction. 一个典型的用法,就是 Map 中的 replaceAll 方法。
其中,将 map 中每个元素 (key,value) 都引用 lambda 中函数表达式来重新应用。 Suppliers 供给型接口 & Consumers 消费型接口可以理解为一个生产者,通常没有输入,但是能够更具特定规则输出数据(元素)。典型的应用就是一个序列生成器。JDK 里面有更丰富接口定义,如BooleanSupplier, DoubleSupplier, LongSupplier 和 IntSupplier.
与Supplier 对应的 Consumer,接收一个输入参数,但是不返回任何数据类型。最常用的就是实现 foreach 中的消费每个迭代元素。
Predicates 断言型接口通常理解,该接口会返回 True 或 False 的数据类型,常见的就是 Stream 中的 Filter 接口实现的逻辑。 Operators该函数式接口主要就是,输入一个数据类型,返回同样的数据类型。
有一个例外,就是
参考文献 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 10:23:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |