java中的方法引用(method reference)官方文檔總結
方法引用(method reference)
方法引用只是lambda表達式的拓展,如果不了解lambda表達式,請先閱讀本文:java語言中的匿名類與lambda表達式介紹與總結
有時候lambda表達式只是調用了一個已經申明過的方法,為了增加可讀性(zhuang bi)和進一步簡化,可以使用方法引用。
下面的例子可以很好說明方法引用的使用情形
例子:如果想要按照年齡(age)來給人(Person)排序
有一個Person的數組 rosterAsArray。首先我們實現一個 Comparator,然後使用Arrays.sort來排序
1 Person[] rosterAsArray = roster.toArray(new Person[roster.size()]);2 3 class PersonAgeComparator implements Comparator
這裡我們看到Comparator實際上是個函數介面(functional interface),所以直接用lambda來簡化
1 Arrays.sort(rosterAsArray,2 (Person a, Person b) -> {3 return a.getBirthday().compareTo(b.getBirthday());4 }5 );
假設Person中已經存在一個static的方法 Person.compareByAge 來比較兩個人的年齡,那麼我們可以寫成如下
1 Arrays.sort(rosterAsArray,2 (a, b) -> Person.compareByAge(a, b)3 );
這個時候我們發現,實際上這個lambda只是調用了已經存在的一個函數compareByAge,那麼我們就可以用方法引用了,我們可以寫成更簡單的形式:
1 Arrays.sort(rosterAsArray, Person::compareByAge);
一行搞定!
4種不同類型的方法引用
很直接,我就不做說明直接上表格了
類型 | 例子 |
---|---|
static方法的引用 | ContainingClass::staticMethodName |
特定對象的方法的引用 | containingObject::instanceMethodName |
特定類型的方法的引用 | ContainingType::methodName |
構造器的引用 | ClassName::new |
學安卓,免學費!50天興趣課程等你來搶!http://www.ujiuye.com/xydt/2017/13042.html?wt.bd=ldd37299tt
2017大學生就業扶助基金:http://www.ujiuye.com/zt/jyfc/?wt.bd=ldd37299tt
IT學習就業交流互動平台:http://www.ujiuye.com/zt/qqhdjlpt/?wt.bd=ldd37299tt
※Vue.js基礎
※Spring+SpringMVC+MyBatis深入學習及搭建——MyBatis查詢緩存
※當年懟《魔獸世界》的那波家長們,現在又來清算《王者榮耀》了?
※中公優就業河北交通職業技術學院Java實驗微課堂取得圓滿成功!
※Docker 的兩類存儲資源-每天5分鐘玩轉 Docker 容器技術
TAG:IT優就業 |
※Unit 5 Geophysical Methods of Exploration 地球物理勘探方法
※解決Electra越獄顯示Error:topanga錯誤的方法!
※jQuery UI API 類別-方法重載(Method Overrides)
※python開發利器,python shell和vim中都需要的tab補全方法
※殭屍毀滅工程steam is not enabled錯誤解決方法
※CodeWarrior IDE使用Tips-使用burner將elf文件轉換生成HEX和BIN文件的方法和步驟詳解
※受AlphaGo啟發,AI重建量子系統新方法登上Nature Physics
※jQuery UI 小部件(Widget)方法調用
※Acta Neuropathol Commun:科學家們開發出診斷神經退行性疾病的新方法
※教程 | 5種快速易用的Python Matplotlib數據可視化方法
※DeepMind於Nature子刊發文提出非對稱博弈的降維方法
※jQuery UI API 類別-方法(Methods)
※requests 庫的常用方法
※絕地求生大逃殺BattlEye Launcher 998解決方法
※JSON編程的parse() 方法
※Ray Dalio的思考方法
※蘋果iPhone打開簡訊iMessage就死機怎麼辦?附解決方法
※Python 中最快解壓 zip 文件的方法
※龍珠鬥士Z提示fatal error問題解決方法
※Python之re模塊方法詳解