1. 程式人生 > >java :: Java中的雙冒號操作符

java :: Java中的雙冒號操作符

運算 system println -c per 情況下 class out array

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中的雙冒號操作符