前言

我们在上一篇文章 中以实例讲解如何定义和使用 lambda 表达式,以及与其它语言相比,lambda 表达式在 Java 中的特殊规范。并且提到,lambda 表达式可以进一步简化为函数引用。
这篇文章将介绍如何使用函数引用,话不多说了,来一起看看详细的介绍吧。
函数引用的类型
函数引用分为以下四种:
Integer::parseIntString::lengthexpensiveTransaction::getValue静态函数
比如:
Function<String, Integer> stringToInteger = (String s) -> Integer.parseInt(s);
可以写作:
Function<String, Integer> stringToInteger = Integer::parseInt;
对象级别函数的引用
BiPredicate<List<String>, String> contains = (list, element) -> list.contains(element);
可以写作:
BiPredicate<List<String>, String> contains = List::contains;
构造函数的引用
下面再举一个构造函数的例子, 首先定义一个函数式接口,唯一的方法 get 返回指定类型的对象。
@FunctionalInterface
public interface Supplier<T> {
T get();
}
Supplier<TantanitReader> constructor = () -> new TantanitReader(); TantanitReader tantanitReader = constructor.get();
上述代码的 lambda 表达式 new 并返回一个新的对象,使得 constructor 变量成为一个构造器的引用。
等价于以下函数引用:
Supplier<TantanitReader> constructor2 = TantanitReader::new; TantanitReader tantanitReader2 = constructor2.get();
以上的例子都是没有参数的情况,下面仍然以构造函数为例,介绍有参数的情况:
public TantanitReader(String loginName) {
this.loginName = loginName;
}
Function<String,TantanitReader> constructor3 = (loginName) -> new TantanitReader(loginName);
TantanitReader tantanitReader3 = constructor3.apply("jack");
Function<String,TantanitReader> constructor4 = TantanitReader::new;
TantanitReader tantanitReader4 = constructor4.apply("jack");
TantanitReader tantanitReader5 = constructor4.apply("tom");
这时由于函数只有一个参数,可以使用 Java 自带的 Function这个函数式接口,它实际起作用的函数如下:
R apply(T t);
作用为根据一个参数,返回一个结果。我们由此可以使用 constructor4 以及相应的函数引用 constructor5。
小结
使用函数引用不仅可以简化 lambda 表达式,而且在语义上可以更加专注于方法名称,也就是要做的事,抽象级别更加接近人类的认知。所以,应当尽可能使用函数引用。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# java8
# 函数引用
# java
# 函数
# 引用参数
# 如何更好的使用Java8中方法引用详解
# Java8中如何通过方法引用获取属性名详解
# 30分钟入门Java8之方法引用学习
# Java8 Lamda方法引用和构造引用原理
# Java8新特性:Lambda表达式之方法引用详解
# 使用java8的方法引用替换硬编码的示例代码
# Java8中方法引用的使用详解
# Java8方法引用和构造引用代码实例
# Java8方法引用及构造方法引用原理实例解析
# Java8新特性之方法引用的实践指南
# 可以使用
# 这篇文章
# 都是
# 说了
# 不多
# 要做
# 只有一个
# 为例
# 成为一个
# 自带
# 四种
# 谢谢大家
# 在上
# 如何使用
# 一篇文章
# 中以
# 分为以下
# 一个函数
# 专注于
# 有疑问
相关文章:
如何在IIS服务器上快速部署高效网站?
建站之星如何防范黑客攻击与数据泄露?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
表情包在线制作网站免费,表情包怎么弄?
高端企业智能建站程序:SEO优化与响应式模板定制开发
建站之星展会模版如何一键下载生成?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
如何快速生成专业多端适配建站电话?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
常州自助建站费用包含哪些项目?
如何构建满足综合性能需求的优质建站方案?
如何快速搭建高效WAP手机网站?
h5在线制作网站电脑版下载,h5网页制作软件?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
威客平台建站流程解析:高效搭建教程与设计优化方案
如何用腾讯建站主机快速创建免费网站?
高端网站建设与定制开发一站式解决方案 中企动力
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
如何挑选最适合建站的高性能VPS主机?
如何在Windows 2008云服务器安全搭建网站?
广德云建站网站建设方案与建站流程优化指南
建站之星免费模板:自助建站系统与智能响应式一键生成
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
如何用PHP快速搭建高效网站?分步指南
如何在IIS中新建站点并配置端口与IP地址?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
建站主机是什么?如何选择适合的建站主机?
完全自定义免费建站平台:主题模板在线生成一站式服务
建站之星安装步骤有哪些常见问题?
如何通过主机屋免费建站教程十分钟搭建网站?
广州建站公司哪家好?十大优质服务商推荐
盐城做公司网站,江苏电子版退休证办理流程?
建站之星如何助力网站排名飙升?揭秘高效技巧
如何快速建站并高效导出源代码?
如何快速搭建虚拟主机网站?新手必看指南
如何高效生成建站之星成品网站源码?
如何选择建站程序?包含哪些必备功能与类型?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
,sp开头的版面叫什么?
如何在新浪SAE免费搭建个人博客?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何规划企业建站流程的关键步骤?
如何快速搭建高效可靠的建站解决方案?
广平建站公司哪家专业可靠?如何选择?
香港服务器租用每月最低只需15元?
如何在建站之星网店版论坛获取技术支持?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
再谈Python中的字符串与字符编码(推荐)
python的本地网站制作,如何创建本地站点?
建站之星如何快速更换网站模板?
*请认真填写需求信息,我们会在24小时内与您取得联系。