你真的會(huì)使用Java的方法引用嗎
前言
Java 8由Oracle公司于2014年3月18日發(fā)布,至今已過(guò)去數(shù)年之久。然而,直到今日仍有許多軟件開(kāi)發(fā)者對(duì)其相關(guān)特性不了解,這可能主要是Java基礎(chǔ)教材更新緩慢的原因。Java 8 方法引用是Java 8的新特性,Java 8出來(lái)已經(jīng)很久了,相信很多伙伴都已經(jīng)在使用了,也有少部分不知道方法引用是怎么使用的,那么本文將帶領(lǐng)大家一起初始Java的方法引用。
方法引用是什么?
方法引用是用來(lái)直接訪問(wèn)類(lèi)或者實(shí)例的已經(jīng)存在的方法或者構(gòu)造方法。方法引用提供了一種引用而不執(zhí)行方法的方式,它需要由兼容的函數(shù)式接口構(gòu)成的目標(biāo)類(lèi)型上下文。計(jì)算時(shí),方法引用會(huì)創(chuàng)建函數(shù)式接口的一個(gè)實(shí)例。
- 方法引用通過(guò)方法的名字來(lái)指向一個(gè)方法。
- 方法引用可以使語(yǔ)言的構(gòu)造更緊湊簡(jiǎn)潔,減少冗余代碼。
- 方法引用使用一對(duì)冒號(hào) :: 。
方法引用與Lambda表達(dá)式
Java 8 中我們可以通過(guò) :: 關(guān)鍵字來(lái)訪問(wèn)類(lèi)的構(gòu)造方法,對(duì)象方法,靜態(tài)方法。
類(lèi)型 | 方法引用 | Lambda表達(dá)式 |
---|---|---|
靜態(tài)方法引用 | 類(lèi)名::staticMethod | (args) -> 類(lèi)名.staticMethod(args) |
實(shí)例方法引用 | inst::instMethod | (args) -> inst.instMethod(args) |
對(duì)象方法引用 | 類(lèi)名::instMethod | (inst,args) -> 類(lèi)名.instMethod(args) |
構(gòu)建方法引用 | 類(lèi)名::new | (args) -> new 類(lèi)名(args) |
方法引用的使用
為了更好的演示方法引用的使用方法,特引入了基礎(chǔ)代碼。
@Data @ApiModel class DataInfo{ private String name; private String info; private String welcome; public static DataInfo create( Supplier<DataInfo> supplier) { return supplier.get(); } public static void getDataInfo( DataInfo dataInfo) { System.out.println("DataInfo : " + dataInfo.toString()); } public void getWebNameinfo( DataInfo dataInfo) { System.out.println(" WebName " + dataInfo.getName()); } public void getWelcomeInfo() { System.out.println("welcome " + this.toString()); } }
靜態(tài)方法引用
靜態(tài)方法引用:它的語(yǔ)法是Class::static_method
dataInfoList.forEach(DataInfo::getDataInfo);
實(shí)例方法引用
特定對(duì)象的方法引用:它的語(yǔ)法是instance::method實(shí)例
dataInfoList.forEach( DataInfo.create( DataInfo::new )::getWebNameinfo );
對(duì)象方法引用
特定類(lèi)的任意對(duì)象的方法引用:它的語(yǔ)法是Class::method
dataInfoList.forEach(DataInfo::getWelcomeInfo);
構(gòu)建方法引用
構(gòu)造器引用:它的語(yǔ)法是Class::new。
DataInfo dataInfo = DataInfo.create(DataInfo::new);
總結(jié)
Java 8 中方法引用,使語(yǔ)言的構(gòu)造更緊湊簡(jiǎn)潔,減少冗余代碼,讓程序員寫(xiě)出高效率、干凈、簡(jiǎn)潔的代碼。
到此這篇關(guān)于Java方法引用的文章就介紹到這了,更多相關(guān)Java方法引用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA maven項(xiàng)目中刷新依賴的兩種方法小結(jié)
這篇文章主要介紹了IDEA maven項(xiàng)目中刷新依賴的兩種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03基于Comparator對(duì)象集合實(shí)現(xiàn)多個(gè)條件按照優(yōu)先級(jí)的比較
這篇文章主要介紹了基于Comparator對(duì)象集合實(shí)現(xiàn)多個(gè)條件按照優(yōu)先級(jí)的比較,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07JAVA統(tǒng)計(jì)字符串中某個(gè)字符出現(xiàn)次數(shù)的方法實(shí)現(xiàn)
本文主要介紹了JAVA統(tǒng)計(jì)字符串中某個(gè)字符出現(xiàn)次數(shù)的方法實(shí)現(xiàn),可以循環(huán)使用String的charAt(int index)函數(shù),具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11Springboot創(chuàng)建項(xiàng)目的圖文教程(idea版本)
這篇文章主要介紹了Springboot創(chuàng)建項(xiàng)目的圖文教程(idea版本),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Spring5中SpringWebContext方法過(guò)時(shí)的解決方案
這篇文章主要介紹了Spring5中SpringWebContext方法過(guò)時(shí)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01基于Spring Boot DevTools實(shí)現(xiàn)開(kāi)發(fā)過(guò)程優(yōu)化
這篇文章主要介紹了基于Spring Boot DevTools實(shí)現(xiàn)開(kāi)發(fā)過(guò)程優(yōu)化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09