java :: Java中的雙冒號操作符
阿新 • • 發佈:2018-06-21
運算 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
範式:
類名::方法名
註意:
- 方法後面並沒有()
- 懶加載方法是否調用要看調用方使用情況
使用範例
方法調用
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中的雙冒號操作符