《Java工程师必读手册》——Java极客主义系列——最完美的Lambda表达式只有一行(2)

简介: 《Java工程师必读手册》——Java极客主义系列——最完美的Lambda表达式只有一行(2)

接上篇:

https://developer.aliyun.com/article/1226759?spm=a2c6h.12873581.technical-group.dArticle1226759.524d5a5cAMEBz4


三、 Lambda表达式方法引用

 

方法引用是一种“Lambda表达式用来直接访问类或实例的已存在的普通方法或构造方法”的方法,提供了一种“只引用而不执行方法”的方式。

 

Java8对方法引用的支持,只是Java编译器层面的支持,Java虚拟机仍然执行的是函数接口的实现。当Java编译器遇到方法引用时,Java编译器会自动推断出并将方法引用还原成函数接口实现。可以这样认为,方法引用只是Java8提供的语法糖。

 

方法引用仍然是一个Lambda表达式,其中方法引用的操作符是双冒号“::”。主要有以下几种方法引用语法:

 

 

 

1. 构造方法引用语法

 

当Lambda表达式参数与调用的构造方法参数一致时,可以采用构造方法引用语法。

 

表达式语法

 

image.png

 

原始代码

 

image.png

 

优化代码

 

image.png

 

2. 静态方法引用语法

 

当Lambda表达式参数与调用的静态方法参数一致时,可以采用静态方法引用语法。

 

表达式语法

 

image.png

 

原始代码

 

image.png

 

 

 

 

优化代码

 

image.png

 

3. 实例方法引用语法

 

当Lambda表达式参数与调用的对象实例方法参数一致时,可以采用实例方法引用语法。

 

表达式语法

 

image.png

 

原始代码

 

image.png

 

优化代码

 

image.png

 

注意

如果getLoginCount在本身所在的类中,可以把deviceService修改为this。

 

4. 参数类方法引用语法

 

当Lambda表达式只有一个参数且调用该参数的无参类方法时,可以采用参数类方法引用语法。

 

 

 

 

表达式语法

 

image.png

 

原始代码

 

image.png

 

优化代码

 

image.png

接下篇:https://developer.aliyun.com/article/1226757?groupCode=java

相关文章
|
8月前
|
安全 Java API
Java中的Lambda表达式:简洁与功能的结合
Java中的Lambda表达式:简洁与功能的结合
525 211
|
8月前
|
安全 Java
Java中的Switch表达式:更简洁的多路分支
Java中的Switch表达式:更简洁的多路分支
646 211
|
8月前
|
Java 编译器
Java 17 Switch表达式:更简洁、更强大的流程控制
Java 17 Switch表达式:更简洁、更强大的流程控制
934 111
|
8月前
|
Java 编译器 API
Java Lambda表达式与函数式编程入门
Lambda表达式是Java 8引入的重要特性,简化了函数式编程的实现方式。它通过简洁的语法替代传统的匿名内部类,使代码更清晰、易读。本文深入讲解Lambda表达式的基本语法、函数式接口、方法引用等核心概念,并结合集合操作、线程处理、事件回调等实战案例,帮助开发者掌握现代Java编程技巧。同时,还解析了面试中高频出现的相关问题,助你深入理解其原理与应用场景。
|
9月前
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
456 14
|
10月前
|
SQL JSON 安全
Java 8 + 中 Lambda 表达式与 Stream API 的应用解析
摘要:本文介绍了Java 8+核心新特性,包括Lambda表达式与Stream API的集合操作(如过滤统计)、函数式接口的自定义实现、Optional类的空值安全处理、接口默认方法与静态方法的扩展能力,以及Java 9模块化系统的组件管理。每个特性均配有典型应用场景和代码示例,如使用Stream统计字符串长度、Optional处理Map取值、模块化项目的依赖声明等,帮助开发者掌握现代Java的高效编程范式。(150字)
183 1
|
9月前
|
设计模式 数据采集 Java
Java正则表达式的基础知识,进阶至熟练掌握。
通过大量的练习来熟悉它们的识别模式、如何设计模式来解决实际问题,才能够逐步达到熟练掌握。更多的是通过实践、编写代码和解决真实问题来完善技能。在这方面,没有快速的捷径,唯有刻意练习和长时间的代码实践。
178 0
|
消息中间件 算法 Java
2023金九银十Java高级工程师面试 1000 题+答案(全)
前言 春节过后招聘旺季就到了,不知道大家是否准备好了,面对金三银四的招聘旺季,如果没有精心准备那笔者认为那是对自己不负责任;就我们 Java 程序员来说,多数的公司总体上面试都是以自我介绍+项目介绍+项目细节/难点提问+基础知识点考核+算法题这个流程下来的。 有些公司可能还会问几个实际的场景类的问题,这个环节阿里是必问的,这种问题通常是没有正确答案的,就看个人的理解,个人的积累了。剩下的就没啥了,都是换汤不换药,聊项目就看你自己对你自己的项目是否理解的透彻,比如经常问你你为什么选择这个技术,为什么这么处理之类的,常考的基础的知识点就那么多,最后算法就是靠刷题。 今天为大家分享的就是当前
|
XML JavaScript Java
华为Java工程师面试题
华为Java工程师面试题
162 0