溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Java的方法引用

發(fā)布時(shí)間:2021-08-06 13:48:46 來(lái)源:億速云 閱讀:142 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下如何使用Java的方法引用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

方法引用是什么?

??方法引用是用來(lái)直接訪問(wèn)類或者實(shí)例的已經(jīng)存在的方法或者構(gòu)造方法。方法引用提供了一種引用而不執(zhí)行方法的方式,它需要由兼容的函數(shù)式接口構(gòu)成的目標(biāo)類型上下文。計(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)類的構(gòu)造方法,對(duì)象方法,靜態(tài)方法。

類型方法引用Lambda表達(dá)式
靜態(tài)方法引用類名::staticMethod(args) -> 類名.staticMethod(args)
實(shí)例方法引用inst::instMethod(args) -> inst.instMethod(args)
對(duì)象方法引用類名::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)方法引用:它的語(yǔ)法是Class::static_method

dataInfoList.forEach(DataInfo::getDataInfo);

實(shí)例方法引用

特定對(duì)象的方法引用:它的語(yǔ)法是instance::method實(shí)例

dataInfoList.forEach( DataInfo.create( DataInfo::new )::getWebNameinfo );

對(duì)象方法引用

特定類的任意對(duì)象的方法引用:它的語(yǔ)法是Class::method

 dataInfoList.forEach(DataInfo::getWelcomeInfo);

構(gòu)建方法引用

構(gòu)造器引用:它的語(yǔ)法是Class::new。

DataInfo dataInfo = DataInfo.create(DataInfo::new);

以上是“如何使用Java的方法引用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI