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