當前位置:
首頁 > 知識 > java中的方法引用(method reference)官方文檔總結

java中的方法引用(method reference)官方文檔總結


方法引用(method reference)

方法引用只是lambda表達式的拓展,如果不了解lambda表達式,請先閱讀本文:java語言中的匿名類與lambda表達式介紹與總結

有時候lambda表達式只是調用了一個已經申明過的方法,為了增加可讀性(zhuang bi)和進一步簡化,可以使用方法引用。

下面的例子可以很好說明方法引用的使用情形

例子:如果想要按照年齡(age)來給人(Person)排序

有一個Person的數組 rosterAsArray。首先我們實現一個 Comparator,然後使用Arrays.sort來排序

java中的方法引用(method reference)官方文檔總結

1 Person[] rosterAsArray = roster.toArray(new Person[roster.size()]);2 3 class PersonAgeComparator implements Comparator {4 public int compare(Person a, Person b) {5 return a.getBirthday().compareTo(b.getBirthday());6 }7 }8 9 Arrays.sort(rosterAsArray, new PersonAgeComparator());

java中的方法引用(method reference)官方文檔總結

這裡我們看到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

java中的方法引用(method reference)官方文檔總結

學安卓,免學費!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

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT優就業 的精彩文章:

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模塊方法詳解