java双冒号是什么操作符

双冒号(::)运算符在Java8中被用作方法引用(method reference),方法引用是与lambda表达式相关的一个重要特性。它提供了一种不执行方法的方法。为此,方法引用需要由兼容的函数接口组成的目标类型上下文。

一、定义与理解

1、定义

双冒号运算操作符是类方法的句柄,lambda表达式的一种简写,这种简写的学名叫eta-conversion或者叫η-conversion。

2、理解

英文格式双冒号::,读:double colon,双冒号(::)运算符在Java 8中被用作方法引用(method reference),方法引用是与lambda表达式相关的一个重要特性。它提供了一种执行方法的方法,为此,方法引用需要由兼容的函数式接口组成的目标类型上下文。

大致意思是,使用lambda表达式会创建匿名方法, 但有时候需要使用一个lambda表达式只调用一个已经存在的方法(不做其它), 所以这才有了方法引用!

二、使用

1、使用场景

双冒号(::)使用场景一般有如下6种:

java双冒号是什么操作符

2、案例详解

2.1 引用静态方法

java双冒号是什么操作符

2.2 引用特定对象实例方法

java双冒号是什么操作符

2.3 引用特定类型的任意对象的实例方法

java双冒号是什么操作符

注意:不要和引用静态方法搞混,认为为什么compareToIgnoreCase是非静态方法却可以使用类名去引用,这两者根本不是一回事,双冒号前的类含义也不同,就是两个应用方向

运行结果如下:

java双冒号是什么操作符

2.4 引用超类(父类)实例方法

java双冒号是什么操作符

2.5 引用类构造方法

一般我们需要声明接口,该接口作为对象的生成器,通过 类名::new 的方式来实例化对象,然后调用方法返回对象。

java双冒号是什么操作符

运行结果可以看下:

java双冒号是什么操作符

2.6 引用数组构造方法

我们可以借助jdk自带的java.util.function.Function类实现对数组构造函数的引用。​​​​​​​

当然,我们也可以使用@FunctionalInterface自定义函数式接口来实现:

java双冒号是什么操作符

来源:本文为CSDN博主「yangzhe19931117」的原创文章
原文链接:https://blog.csdn.net/yangzhe19931117/article/details/128246653

延伸阅读

常用语法

  • 静态方法引用语法:className::methodName 例如:Person::getAge
  • 对象的实例方法引用语法:instanceName::methodName 例如:System.out::println
  • 对象的超类方法引用语法:super::methodName
  • 类构造器引用语法:className::new 例如:ArrayList::new
  • 数组构造器引用语法:typename[]::new 例如:String[]::new

来源:本文为CSDN博主「心潮的滴滴」的原创文章
原文链接:https://blog.csdn.net/qq_42582773/article/details/127170070

文章标题:java双冒号是什么操作符,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37391

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编的头像小编

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部