国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

樂(lè)字節(jié)-Java8新特性之方法引用

Codeing_ls / 2842人閱讀

摘要:上一篇小樂(lè)介紹了新特性函數(shù)式接口,大家可以點(diǎn)擊回顧。中引入方法引用新特性用于簡(jiǎn)化應(yīng)用對(duì)象方法的調(diào)用,方法引用是用來(lái)直接訪(fǎng)問(wèn)類(lèi)或者實(shí)例的已經(jīng)存在的方法或者構(gòu)造方法。方法引用是一種更簡(jiǎn)潔易懂的表達(dá)式。

上一篇小樂(lè)介紹了《Java8新特性-函數(shù)式接口》,大家可以點(diǎn)擊回顧。這篇文章將接著介紹Java8新特性之方法引用。

Java8 中引入方法引用新特性,用于簡(jiǎn)化應(yīng)用對(duì)象方法的調(diào)用,?方法引用是用來(lái)直接訪(fǎng)問(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í)例。 當(dāng)Lambda表達(dá)式中只是執(zhí)行一個(gè)方法調(diào)用時(shí),不用Lambda表達(dá)式,直接通過(guò)方法引用的形式可讀性更高一些。方法引用是一種更簡(jiǎn)潔易懂的Lambda表達(dá)式。

1、基本格式

方法引用使用一對(duì)冒號(hào)?:: 來(lái)簡(jiǎn)化對(duì)象方法的調(diào)用,當(dāng)你想要使用方法引用時(shí),目標(biāo)引用放在分隔符 :: 前,方法名稱(chēng)放在后面, 如下形式:

方法引用參考示例:

2、方法引用分類(lèi)

Java8 中對(duì)于方法引用主要分為三大類(lèi):

構(gòu)造器引用 Class::new

靜態(tài)方法引用 Class::static_method

特定對(duì)象的方法引用 instance::method

2.1、構(gòu)造器引用

語(yǔ)法是Class::new,或者更一般的Class< T >::new實(shí)例如下

借助構(gòu)造器引用實(shí)例化Iphone 對(duì)象,代碼如下:

public class IPhone {
    private Integer id;
    private String version;
    private Date createTime;
    private String name;

    public IPhone() {
    }

    public IPhone(Integer id) {
        this.id = id;
    }

    public IPhone(Integer id, String name) {
        this.id = id;
        this.name = name;
    }
    ...
}


public static void main(String[] args) {
        /**
         * 構(gòu)造器引用
         * 無(wú)參構(gòu)造器
         */
        // 實(shí)現(xiàn)Supplier 接口 通過(guò)構(gòu)造器引用
        Supplier factory01= IPhone::new;
        IPhone p01 = factory01.get();
        System.out.println(p01);

        /**
         *  等價(jià)的Lambda 寫(xiě)法
         */
        Supplier factory02 = ()->new IPhone();
        IPhone p02 = factory02.get();
        System.out.println(p02);
    
    
    
           /**
         * 當(dāng)構(gòu)造器方法存在參數(shù) 參數(shù)個(gè)數(shù)為1個(gè)時(shí)
         */
        Function factory03 = IPhone::new;
        IPhone p03 = factory03.apply(2019);
        System.out.println(p03);

        /**
         * 等價(jià)的Lambda 寫(xiě)法
         */
        Function factory04 = (id)-> new IPhone(id);
        IPhone p04 = factory04.apply(2019);
        System.out.println(p04);
    
    
           /**
         * 當(dāng)構(gòu)造器方法存在參數(shù) 參數(shù)個(gè)數(shù)為2個(gè)時(shí)
         */
        BiFunction factory05 = IPhone::new;
        IPhone p05 = factory05.apply(2019,"iphoneX");
        System.out.println(p05);

        /**
         * 等價(jià)的Lambda 寫(xiě)法
         */
        BiFunction factory06 = (id,name)-> new IPhone(id,name);
        IPhone p06 = factory06.apply(2019,"iphoneMax");
        System.out.println(p06);
      /**
         當(dāng)構(gòu)造器參數(shù)參過(guò)2個(gè)時(shí)怎么解決呢???
      **/
    }
2.2、靜態(tài)方法引用

語(yǔ)法是Class::static_method,實(shí)例如下:

使用靜態(tài)方法引用 執(zhí)行IPhone 靜態(tài)方法

public class IPhone {
    private Integer id;
    private String version;
    private Date createTime;
    private String name;

    public IPhone() {
    }

    public IPhone(Integer id) {
        this.id = id;
    }

    public IPhone(Integer id, String name) {
        this.id = id;
        this.name = name;
    }


    /**
       靜態(tài)方法
    */
    public  static  void info(){
        System.out.println("這是一部IPhone");
    }
}

/**
 * 定義函數(shù)式接口
 */
@FunctionalInterface
public interface PrintFunction{
    void print();
}

 //  靜態(tài)方法引用
PrintFunction pf01= IPhone::info;
pf01.print();
/**
  * 等價(jià)的Lambda 寫(xiě)法
*/
PrintFunction pf02 = () -> {
    IPhone.info();
};
pf02.print();


// 靜態(tài)方法引用 靜態(tài)方法存在參數(shù)時(shí)
/**
 * 定義函數(shù)式接口
 */
@FunctionalInterface
public interface PrintFunction02 {
    R print(T t);
}

/**
  * 靜態(tài)方法引用  方法存在參數(shù)時(shí)
 */
PrintFunction02 pf03 = IPhone::getPrice;
System.out.println(pf03.print("iphone"));

/**
 * 等價(jià)的Lambda 寫(xiě)法
 */
PrintFunction02 pf04 =(str)->{
    return IPhone.getPrice(str);
};
2.3、特定類(lèi)的任意實(shí)例化對(duì)象的方法引用

語(yǔ)法是instance::method ,此時(shí)引用方法時(shí)必須存在實(shí)例,示例代碼如下:

/**
 * 構(gòu)造器引用 實(shí)例化對(duì)象
 * 成員方法引用
*/
BiFunction factory07= IPhone::new;
IPhone p07 = factory07.apply(2019,"iphoneX");
PrintFunction pp= p07::mm;
pp.print();

/**
 * 等價(jià)的Lambda 寫(xiě)法
 */
BiFunction factory08 = (id,name)-> new IPhone(id,name);
IPhone p08 = factory08.apply(2019,"iphoneMax");
PrintFunction pp02 = ()->{
    p08.mm();
};
pp02.print();

2.4 類(lèi)的成員方法引用

(略)
接下來(lái),小樂(lè)會(huì)繼續(xù)介紹Java8新特性之Stream,敬請(qǐng)期待。歡迎關(guān)注樂(lè)字節(jié),記得評(píng)論點(diǎn)贊哦。
轉(zhuǎn)發(fā)請(qǐng)記得注明出處和作者。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/77476.html

相關(guān)文章

  • 樂(lè)字節(jié)Java8核心特性實(shí)戰(zhàn)方法引用

    摘要:大家好,我是樂(lè)字節(jié)的小樂(lè),上一次我們說(shuō)到了核心特性之函數(shù)式接口,接下來(lái)我們繼續(xù)了解又一核心特性方法引用。方法引用是一種更簡(jiǎn)潔易懂的表達(dá)式。感謝光臨閱讀小樂(lè)的,敬請(qǐng)關(guān)注樂(lè)字節(jié)后續(xù)將繼續(xù)講述等前沿知識(shí)技術(shù)。 大家好,我是樂(lè)字節(jié)的小樂(lè),上一次我們說(shuō)到了Java8核心特性之函數(shù)式接口,接下來(lái)我們繼續(xù)了解Java8又一核心特性——方法引用。 showImg(https://segmentfaul...

    lakeside 評(píng)論0 收藏0
  • 樂(lè)字節(jié)-Java8特性Stream流(上)

    摘要:需要注意的是很多流操作本身就會(huì)返回一個(gè)流,所以多個(gè)操作可以直接連接起來(lái),如下圖這樣,操作可以進(jìn)行鏈?zhǔn)秸{(diào)用,并且并行流還可以實(shí)現(xiàn)數(shù)據(jù)流并行處理操作。為集合創(chuàng)建并行流。 上一篇文章,小樂(lè)給大家介紹了《Java8新特性之方法引用》,下面接下來(lái)小樂(lè)將會(huì)給大家介紹Java8新特性之Stream,稱(chēng)之為流,本篇文章為上半部分。 1、什么是流? Java Se中對(duì)于流的操作有輸入輸出IO流,而Jav...

    dingda 評(píng)論0 收藏0
  • 樂(lè)字節(jié)-Java8特性函數(shù)式接口

    摘要:上一篇小樂(lè)帶大家學(xué)過(guò)新特性表達(dá)式,什么時(shí)候可以使用通常表達(dá)式是用在函數(shù)式接口上使用的。使用實(shí)現(xiàn)創(chuàng)建產(chǎn)生一個(gè)工廠對(duì)象以上就是小樂(lè)帶給大家的新特性之函數(shù)式接口,下一篇將會(huì)為大家?guī)?lái)新特性之方法引用,敬請(qǐng)關(guān)注。 上一篇小樂(lè)帶大家學(xué)過(guò) Java8新特性-Lambda表達(dá)式,什么時(shí)候可以使用Lambda?通常Lambda表達(dá)式是用在函數(shù)式接口上使用的。從Java8開(kāi)始引入了函數(shù)式接口,其說(shuō)明比較...

    lakeside 評(píng)論0 收藏0
  • 樂(lè)字節(jié)-Java8特性-接口默認(rèn)方法

    摘要:注意當(dāng)多個(gè)父接口中存在相同的默認(rèn)方法時(shí),子類(lèi)中以就近原則繼承。定義靜態(tài)默認(rèn)方法這是版簡(jiǎn)易計(jì)算器接口默認(rèn)方法使用定義接口并提供默認(rèn)打印方法定義接口默認(rèn)方法支持方法形參這是數(shù)值運(yùn)算基本接口。。。 總概 JAVA8 已經(jīng)發(fā)布很久,而且毫無(wú)疑問(wèn),java8是自java5(2004年發(fā)布)之后的最重要的版本。其中包括語(yǔ)言、編譯器、庫(kù)、工具和JVM等諸多方面的新特性。 Java8 新特性列表如下:...

    arashicage 評(píng)論0 收藏0
  • 樂(lè)字節(jié)-Java8特性Base64和重復(fù)注解與類(lèi)型注解

    摘要:上一篇小樂(lè)給大家說(shuō)了樂(lè)字節(jié)新特性之,接下來(lái)小樂(lè)繼續(xù)給大家說(shuō)一說(shuō)新特性之和重復(fù)注解與類(lèi)型注解。內(nèi)部類(lèi)與方法相關(guān)的內(nèi)部類(lèi)這是一個(gè)靜態(tài)類(lèi)。也是一個(gè)靜態(tài)類(lèi)。 上一篇小樂(lè)給大家說(shuō)了《樂(lè)字節(jié)-Java8新特性之Date API》,接下來(lái)小樂(lè)繼續(xù)給大家說(shuō)一說(shuō)Java8新特性之Base64和重復(fù)注解與類(lèi)型注解。 一、Base64 在Java 8中,內(nèi)置了Base64編解碼相關(guān)的特性。Java 8中使用...

    1treeS 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<