先構造一些數據,創建一個User類
java lambda 表達式中的雙冒號的用法 ::
雙冒號運算就是Java中的[方法引用],[方法引用]的格式是
類名::方法名
如下圖所示
User是一個類, getAge是方法名,注意是方法名呀,后面沒有括號()的。為什么不要括號,因為這樣的是式子并不代表一定會調用這個方法。這種式子一般是用作Lambda表達式,Lambda有所謂懶加載嘛,不要括號就是說,看情況調用方法。
?
?
可以替換成,如下圖?
?e -> e.getAge()
User -> User.getAge()
?
這種[方法引用]或者說[雙冒號運算]對應的參數類型是Function<T,R>?T表示傳入類型,R表示返回類型。比如表達式User.getAge();?傳入參數是User,返回值是User.getAge(),那么方法引用User::getAge就對應著Function<User,Integer>類型。
如下圖: