java :: Java中的双冒号操作符

Posted Alance

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java :: Java中的双冒号操作符相关的知识,希望对你有一定的参考价值。

java中的双冒号操作符

定义

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

通常的情况下:

把 x -> System.out.println(x) 简化为 System.out::println 的过程称之为 eta-conversion

把 System.out::println 简化为 x -> System.out.println(x) 的过程称之为 eta-expansion

范式:
类名::方法名

注意:

  1. 方法后面并没有()
  2. 懒加载方法是否调用要看调用方使用情况

使用范例

方法调用

person -> person.getAge();
可以替换成
Person::getAge

x -> System.out.println(x)
可以替换成
System.out::println
out是一个PrintStream类的对象,println是该类的方法,依据x的类型来重载方法

创建对象

() -> new ArrayList<>();
可以替换为
ArrayList::new
new关键字实际上调用的是ArrayList的构造方法

JVM实现

JVM底层实现是CallSite,对JDK层暴漏的接口是Functional

引用

http://hongjiang.info/eta-conversion-and-eta-expansion/










以上是关于java :: Java中的双冒号操作符的主要内容,如果未能解决你的问题,请参考以下文章

c语言的双冒号是啥意思::

Kotlin:: 双冒号操作符详解 ( 获取类的引用 | 获取对象类型的引用 | 获取函数的引用 | 获取属性的引用 | Java 中的 Class 与 Kotlin 中的 KClass )

Java 8 Lambda表达式之方法引用 ::双冒号操作符

Java 8 Lambda表达式之方法引用 ::双冒号操作符

双冒号是啥意思?

识别java中的双击