Java中双冒号(::)运算操作符用法详解
作者:yangzhe19931117
一、定义与理解
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双冒号运算操作符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!