现在的位置:主页 > 综合新闻 >

Java如何支持函数式编程?(3)

来源:电脑编程技巧与维护 【在线投稿】 栏目:综合新闻 时间:2020-09-24

【作者】网站采编

【关键词】

【摘要】另外一种聪明一些的做法无外乎就是在需要的地方搞个匿名内部类,比如: 匿名内部类实现的代码量没有多到哪里去,结构也还算清晰。Comparator接口在

另外一种聪明一些的做法无外乎就是在需要的地方搞个匿名内部类,比如:

匿名内部类实现的代码量没有多到哪里去,结构也还算清晰。Comparator接口在Jdk 1.8的实现增加了FunctionalInterface注解,代表Comparator是一个函数式接口,使用者可放心的通过lambda表达式来实例化。那我们来看看使用lambda表达式来快速new一个自定义比较器所需要编写的代码:

-> 前面的()是Comparator接口中compare方法的参数列表,->后面则是compare方法的方法体。

下面将Java提供的Function、Predicate这两个函数接口的源码,摘抄如下:

@FunctionalInterface注解使用场景

我们知道,一个接口只要满足只有一个抽象方法的条件,即可以当成函数式接口使用,有没有@FunctionalInterface都无所谓。但是jdk定义了这个注解肯定是有原因的,对于开发者,该注解的使用一定要三思而后续行。

如果使用了此注解,再往接口中新增抽象方法,编译器就会报错,编译不通过。换句话说,@FunctionalInterface就是一个承诺,承诺该接口世世代代都只会存在这一个抽象方法。因此,凡是使用了这个注解的接口,开发者可放心大胆的使用Lambda来实例化。当然误用@FunctionalInterface带来的后果也是极其惨重的:如果哪天你把这个注解去掉,再加一个抽象方法,则所有使用Lambda实例化该接口的客户端代码将全部编译错误。

特别地,当某接口只有一个抽象方法,但没有用@FunctionalInterface注解修饰时,则代表别人没有承诺该接口未来不增加抽象方法,所以建议不要用Lambda来实例化,还是老老实实的用以前的方式比较稳妥。

小结

函数式编程更符合数学上函数映射的思想。具体到编程语言层面,我们可以使用Lambda表达式来快速编写函数映射,函数之间通过链式调用连接到一起,完成所需业务逻辑。Java的Lambda表达式是后来才引入的,由于函数式编程在并行处理方面的优势,正在被大量应用在大数据计算领域。

Java微服务沙箱体验挑战

10分钟搭建一个Task Manager任务管理器

文章来源:《电脑编程技巧与维护》 网址: http://www.dnbcjqywh.cn/zonghexinwen/2020/0924/507.html

上一篇:百万年薪必备!AI行业常用编程语言大盘点,看看
下一篇:C/C++编程笔记:计算机网络基础知识总结!超全面

电脑编程技巧与维护投稿 | 电脑编程技巧与维护编辑部| 电脑编程技巧与维护版面费 | 电脑编程技巧与维护论文发表 | 电脑编程技巧与维护最新目录
Copyright © 2018 《电脑编程技巧与维护》杂志社 版权所有
投稿电话: 投稿邮箱: