Java中双冒号(::)运算操作符用法详解
一、定义与理解
1、定义
双冒号运算操作符是类方法的句柄,lambda表达式的一种简写,这种简写的学名叫eta-conversion或者叫η-conversion。
2、理解
英文格式双冒号::,读:double colon,双冒号(::)运算符在Java 8中被用作方法引用(method reference),方法引用是与lambda表达式相关的一个重要特性。它提供了一种执行方法的方法,为此,方法引用需要由兼容的函数式接口组成的目标类型上下文。
大致意思是,使用lambda表达式会创建匿名方法, 但有时候需要使用一个lambda表达式只调用一个已经存在的方法(不做其它), 所以这才有了方法引用!
大概意思就是,使用lambda表达式会创建匿名函数, 但有时候需要使用一个lambda表达式只调用一个已经存在的方法(不做其它), 所以这才有了方法引用!
二、使用
1、使用场景
双冒号(::)使用场景一般有如下6种:
2、案例详解
2.1)引用静态方法
2.2)引用特定对象实例方法
2.3)引用特定类型的任意对象的实例方法
注意:不要和引用静态方法搞混,认为为什么compareToIgnoreCase是非静态方法却可以使用类名去引用,这两者根本不是一回事,双冒号前的类含义也不同,就是两个应用方向
运行结果如下:
2.4)引用超类(父类)实例方法
2.5)引用类构造方法
一般我们需要声明接口,该接口作为对象的生成器,通过 类名::new 的方式来实例化对象,然后调用方法返回对象。
运行结果可以看下:
2.6)引用数组构造方法
我们可以借助jdk自带的java.util.function.Function类实现对数组构造函数的引用。
当然,我们也可以使用@FunctionalInterface自定义函数式接口来实现:
总结
到此这篇关于Java中双冒号(::)运算操作符用法详解的文章就介绍到这了,更多相关Java双冒号运算操作符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
IntelliJ IDEA像Eclipse一样打开多个项目的图文教程
这篇文章主要介绍了IntelliJ IDEA像Eclipse一样打开多个项目的方法图文教程讲解,需要的朋友可以参考下2018-03-03Spring中@Configuration和@Component注解的区别及原理
这篇文章主要介绍了Spring中@Configuration和@Component注解的区别及原理,从功能上来讲,这些注解所负责的功能的确不相同,但是从本质上来讲,Spring内部都将其作为配置注解进行处理,需要的朋友可以参考下2023-11-11Java中实现Comparator接口和用法实例(简明易懂)
这篇文章主要介绍了Java中实现Comparator接口和用法实例(简明易懂),本文给出实现Comparator接口的实例和使用这个接口的代码实例,需要的朋友可以参考下2015-05-05
最新评论