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

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

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

前言

我們在上一篇文章 中以實例講解如何定義和使用 lambda 表達式,以及與其它語言相比,lambda 表達式在 Java 中的特殊規(guī)范。并且提到,lambda 表達式可以進一步簡化為函數(shù)引用。

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

函數(shù)引用的類型

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

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

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

比如:

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

可以寫作:

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

對象級別函數(shù)的引用

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

可以寫作:

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

構造函數(shù)的引用

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

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

上述代碼的 lambda 表達式 new 并返回一個新的對象,使得 constructor 變量成為一個構造器的引用。

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

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

以上的例子都是沒有參數(shù)的情況,下面仍然以構造函數(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ù),可以使用 Java 自帶的 Function這個函數(shù)式接口,它實際起作用的函數(shù)如下:

R apply(T t);

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

小結

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • SpringBoot?ApplicationContext接口深入分析

    SpringBoot?ApplicationContext接口深入分析

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

    Spring中的InitializingBean接口的使用

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

    JavaWeb核心技術中Session與Cookie淺析

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

    springboot集成mqtt的實踐開發(fā)

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

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

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

    SpringBoot使用spring retry重試機制的操作詳解

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

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

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

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

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

    Apache POI將PPT轉換成圖片實例代碼

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

    基于slf4j日志MDC輸出格式的問題

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

最新評論

黄平县| 喜德县| 弋阳县| 雷山县| 合水县| 杭州市| 武夷山市| 万安县| 武城县| 灵石县| 手游| 澄城县| 双城市| 绩溪县| 乌拉特中旗| 措美县| 承德市| 隆子县| 东乡县| 高尔夫| 汉川市| 若尔盖县| 万年县| 西盟| 丹巴县| 土默特左旗| 衡南县| 濮阳县| 金山区| 武胜县| 闵行区| 龙州县| 尚义县| 招远市| 黄平县| 天祝| 怀远县| 邛崃市| 高雄县| 东莞市| 福安市|