你真的會使用Java的方法引用嗎

前言

Java 8由Oracle公司於2014年3月18日發佈,至今已過去數年之久。然而,直到今日仍有許多軟件開發者對其相關特性不瞭解,這可能主要是Java基礎教材更新緩慢的原因。Java 8 方法引用是Java 8的新特性,Java 8出來已經很久瞭,相信很多夥伴都已經在使用瞭,也有少部分不知道方法引用是怎麼使用的,那麼本文將帶領大傢一起初始Java的方法引用。

方法引用是什麼?

  方法引用是用來直接訪問類或者實例的已經存在的方法或者構造方法。方法引用提供瞭一種引用而不執行方法的方式,它需要由兼容的函數式接口構成的目標類型上下文。計算時,方法引用會創建函數式接口的一個實例。

  • 方法引用通過方法的名字來指向一個方法。
  • 方法引用可以使語言的構造更緊湊簡潔,減少冗餘代碼。
  • 方法引用使用一對冒號 :: 。

方法引用與Lambda表達式

Java 8 中我們可以通過 :: 關鍵字來訪問類的構造方法,對象方法,靜態方法。

類型 方法引用 Lambda表達式
靜態方法引用 類名::staticMethod (args) -> 類名.staticMethod(args)
實例方法引用 inst::instMethod (args) -> inst.instMethod(args)
對象方法引用 類名::instMethod (inst,args) -> 類名.instMethod(args)
構建方法引用 類名::new (args) -> new 類名(args)

方法引用的使用

為瞭更好的演示方法引用的使用方法,特引入瞭基礎代碼。

@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());
    }
}

靜態方法引用

靜態方法引用:它的語法是Class::static_method

dataInfoList.forEach(DataInfo::getDataInfo);

實例方法引用

特定對象的方法引用:它的語法是instance::method實例

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

對象方法引用

特定類的任意對象的方法引用:它的語法是Class::method

 dataInfoList.forEach(DataInfo::getWelcomeInfo);

構建方法引用

構造器引用:它的語法是Class::new。

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

總結

Java 8 中方法引用,使語言的構造更緊湊簡潔,減少冗餘代碼,讓程序員寫出高效率、幹凈、簡潔的代碼。

到此這篇關於Java方法引用的文章就介紹到這瞭,更多相關Java方法引用內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: