《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

相关文章
|
2天前
|
Java 程序员 编译器
JavaSE&Java8 Lambda 表达式
JavaSE&Java8 Lambda 表达式
|
5天前
|
并行计算 Java 编译器
Java Lambda表达式简介
Java Lambda表达式简介
12 0
|
7天前
|
Java API
Java Lambda
Java Lambda
15 0
|
7天前
|
Java 开发者
探索 Java 的函数式接口和 Lambda 表达式
【4月更文挑战第19天】Java 中的函数式接口和 Lambda 表达式提供了简洁、灵活的编程方式。函数式接口有且仅有一个抽象方法,用于与 Lambda(一种匿名函数语法)配合,简化代码并增强可读性。Lambda 表达式的优点在于其简洁性和灵活性,常用于事件处理、过滤和排序等场景。使用时注意兼容性和变量作用域,它们能提高代码效率和可维护性。
|
10天前
|
分布式计算 Java API
Java 8新特性之Lambda表达式与Stream API
【4月更文挑战第16天】本文将介绍Java 8中的两个重要新特性:Lambda表达式和Stream API。Lambda表达式是Java 8中引入的一种新的编程语法,它允许我们将函数作为参数传递给其他方法,从而使代码更加简洁、易读。Stream API是Java 8中引入的一种新的数据处理方式,它允许我们以声明式的方式处理数据,从而使代码更加简洁、高效。本文将通过实例代码详细讲解这两个新特性的使用方法和优势。
|
13天前
|
Java
Java 14 强势登场:Switch 表达式的进化之路
Java 14 强势登场:Switch 表达式的进化之路
18 0
|
3天前
|
安全 Java 调度
Java线程:深入理解与实战应用
Java线程:深入理解与实战应用
20 0
|
22小时前
|
消息中间件 缓存 NoSQL
Java多线程实战-CompletableFuture异步编程优化查询接口响应速度
Java多线程实战-CompletableFuture异步编程优化查询接口响应速度
|
1天前
|
数据采集 存储 Java
高德地图爬虫实践:Java多线程并发处理策略
高德地图爬虫实践:Java多线程并发处理策略
|
1天前
|
缓存 Java
【Java基础】简说多线程(上)
【Java基础】简说多线程(上)
5 0