最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java8學(xué)習(xí)教程之函數(shù)引用的使用方法

 更新時(shí)間:2017年09月18日 11:05:17   投稿:daisy  
這篇文章主要給大家介紹了關(guān)于java8學(xué)習(xí)教程之函數(shù)引用的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)下吧。

前言

我們?cè)?a target="_blank" href="http://m.fzitv.net/article/123911.htm">上一篇文章 中以實(shí)例講解如何定義和使用 lambda 表達(dá)式,以及與其它語(yǔ)言相比,lambda 表達(dá)式在 Java 中的特殊規(guī)范。并且提到,lambda 表達(dá)式可以進(jìn)一步簡(jiǎn)化為函數(shù)引用。

這篇文章將介紹如何使用函數(shù)引用,話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

函數(shù)引用的類型

函數(shù)引用分為以下四種:

  • 靜態(tài)函數(shù),比如 Integer 類的 parseInt 函數(shù),可以寫作 Integer::parseInt
  • 對(duì)象級(jí)別函數(shù)的引用,比如 String 類的 length 函數(shù),可以寫作 String::length
  • 具體實(shí)例的函數(shù)的引用,比如名稱為 expensiveTransaction 的一個(gè)實(shí)例的 getValue,寫作 expensiveTransaction::getValue
  • 構(gòu)造函數(shù)的引用

靜態(tài)函數(shù)

比如:

Function<String, Integer> stringToInteger = (String s) -> Integer.parseInt(s);

可以寫作:

Function<String, Integer> stringToInteger = Integer::parseInt;

對(duì)象級(jí)別函數(shù)的引用

BiPredicate<List<String>, String> contains =
(list, element) -> list.contains(element);

可以寫作:

BiPredicate<List<String>, String> contains = List::contains;

構(gòu)造函數(shù)的引用

下面再舉一個(gè)構(gòu)造函數(shù)的例子, 首先定義一個(gè)函數(shù)式接口,唯一的方法 get 返回指定類型的對(duì)象。

@FunctionalInterface
public interface Supplier<T> {
 T get();
}
Supplier<TantanitReader> constructor = () -> new TantanitReader();
TantanitReader tantanitReader = constructor.get();

上述代碼的 lambda 表達(dá)式 new 并返回一個(gè)新的對(duì)象,使得 constructor 變量成為一個(gè)構(gòu)造器的引用。

等價(jià)于以下函數(shù)引用:

Supplier<TantanitReader> constructor2 = TantanitReader::new;
TantanitReader tantanitReader2 = constructor2.get();

以上的例子都是沒(méi)有參數(shù)的情況,下面仍然以構(gòu)造函數(shù)為例,介紹有參數(shù)的情況:

public TantanitReader(String loginName) {
 this.loginName = loginName;
}
Function<String,TantanitReader> constructor3 = (loginName) -> new TantanitReader(loginName);
TantanitReader tantanitReader3 = constructor3.apply("jack");

Function<String,TantanitReader> constructor4 = TantanitReader::new;
TantanitReader tantanitReader4 = constructor4.apply("jack");
TantanitReader tantanitReader5 = constructor4.apply("tom");

這時(shí)由于函數(shù)只有一個(gè)參數(shù),可以使用 Java 自帶的 Function這個(gè)函數(shù)式接口,它實(shí)際起作用的函數(shù)如下:

R apply(T t);

作用為根據(jù)一個(gè)參數(shù),返回一個(gè)結(jié)果。我們由此可以使用 constructor4 以及相應(yīng)的函數(shù)引用 constructor5。

小結(jié)

使用函數(shù)引用不僅可以簡(jiǎn)化 lambda 表達(dá)式,而且在語(yǔ)義上可以更加專注于方法名稱,也就是要做的事,抽象級(jí)別更加接近人類的認(rèn)知。所以,應(yīng)當(dāng)盡可能使用函數(shù)引用。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • SpringBoot?ApplicationContext接口深入分析

    SpringBoot?ApplicationContext接口深入分析

    ApplicationContext是Spring應(yīng)用程序中的中央接口,由于繼承了多個(gè)組件,使得ApplicationContext擁有了許多Spring的核心功能,如獲取bean組件,注冊(cè)監(jiān)聽(tīng)事件,加載資源文件等
    2022-11-11
  • Spring中的InitializingBean接口的使用

    Spring中的InitializingBean接口的使用

    這篇文章主要介紹了Spring中的InitializingBean接口的使用,需要的朋友可以參考下
    2018-04-04
  • JavaWeb核心技術(shù)中Session與Cookie淺析

    JavaWeb核心技術(shù)中Session與Cookie淺析

    session的工作原理和cookie非常類似,在cookie中存放一個(gè)sessionID,真實(shí)的數(shù)據(jù)存放在服務(wù)器端,客戶端每次發(fā)送請(qǐng)求的時(shí)候帶上sessionID,服務(wù)端根據(jù)sessionID進(jìn)行數(shù)據(jù)的響應(yīng)
    2023-02-02
  • springboot集成mqtt的實(shí)踐開(kāi)發(fā)

    springboot集成mqtt的實(shí)踐開(kāi)發(fā)

    本篇文章主要介紹了springboot集成mqtt的實(shí)踐開(kāi)發(fā),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Spring cloud alibaba之Ribbon負(fù)載均衡實(shí)現(xiàn)方案

    Spring cloud alibaba之Ribbon負(fù)載均衡實(shí)現(xiàn)方案

    Spring cloud Ribbon是基于Netflix Ribbon實(shí)現(xiàn)的一套客戶端的負(fù)載均衡工具,Ribbon客戶端提供一系列完善的配置,如超時(shí)、重試等,Ribbon也可以實(shí)現(xiàn)自己的負(fù)載均衡算法,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • SpringBoot使用spring retry重試機(jī)制的操作詳解

    SpringBoot使用spring retry重試機(jī)制的操作詳解

    實(shí)際工作中由于網(wǎng)絡(luò)波動(dòng)等原因?qū)е麓a執(zhí)行失敗需要重新執(zhí)行,保證最終能夠完成業(yè)務(wù)功能,通常來(lái)說(shuō),會(huì)用try/catch,while循環(huán)或者定時(shí)任務(wù)重處理,但是這樣的做法缺乏統(tǒng)一性,要多寫很多代碼,spring-retry組件可以通過(guò)注解優(yōu)雅的實(shí)現(xiàn)重處理功能
    2024-12-12
  • JAVA使用ElasticSearch查詢in和not in的實(shí)現(xiàn)方式

    JAVA使用ElasticSearch查詢in和not in的實(shí)現(xiàn)方式

    今天小編就為大家分享一篇關(guān)于JAVA使用Elasticsearch查詢in和not in的實(shí)現(xiàn)方式,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • Java后端Tomcat實(shí)現(xiàn)WebSocket實(shí)例教程

    Java后端Tomcat實(shí)現(xiàn)WebSocket實(shí)例教程

    WebSocket protocol 是HTML5一種新的協(xié)議。它實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工通信(full-duplex)。一開(kāi)始的握手需要借助HTTP請(qǐng)求完成握手。本文給大家介紹Java后端Tomcat實(shí)現(xiàn)WebSocket實(shí)例教程,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • Apache POI將PPT轉(zhuǎn)換成圖片實(shí)例代碼

    Apache POI將PPT轉(zhuǎn)換成圖片實(shí)例代碼

    這篇文章主要介紹了Apache POI將PPT轉(zhuǎn)換成圖片實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 基于slf4j日志MDC輸出格式的問(wèn)題

    基于slf4j日志MDC輸出格式的問(wèn)題

    這篇文章主要介紹了基于slf4j日志MDC輸出格式的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論

鄂伦春自治旗| 措勤县| 新乐市| 南通市| 武宁县| 云霄县| 从江县| 东丰县| 洱源县| 卢湾区| 五大连池市| 广南县| 永靖县| 班玛县| 赤水市| 汽车| 特克斯县| 固镇县| 沙河市| 竹溪县| 成武县| 陈巴尔虎旗| 尚义县| 彝良县| 高邮市| 盐亭县| 海林市| 高州市| 西城区| 高唐县| 天津市| 梁山县| 施甸县| 土默特左旗| 张家界市| 怀化市| 门源| 尉犁县| 青州市| 蒙阴县| 黄大仙区|