Java8(三) 方法引用

来源:https://www.cnblogs.com/lyldelove/archive/2020/07/13/13296520.html
-Advertisement-
Play Games

方法引用 方法引用是一個更加緊湊,易讀的 Lambda 表達式。 當Lambda表達式中只是執行一個已存在方法調用時使用,且方法引用所使用方法的入參和返回值與lambda表達式實現的函數式介面的入參和返回值一致。 1 幾種類型 1.1 方法引用 對象引用 :: 實例方法名 public class ...


方法引用

方法引用是一個更加緊湊,易讀的 Lambda 表達式。

當Lambda表達式中只是執行一個已存在方法調用時使用,且方法引用所使用方法的入參和返回值與lambda表達式實現的函數式介面的入參和返回值一致。

1 幾種類型

1.1 方法引用
對象引用 :: 實例方法名
public class Test{
    public static void main(String[] args){
        Test test = new Test();
        // lambda表達式使用:
        Arrays.asList(new String[] {"a", "c", "b"}).stream().forEach(s -> test.println(s));
        // 特定對象的實例方法引用:
        Arrays.asList(new String[] {"a", "c", "b"}).stream().forEach(test :: println);
    }
    
    public void println(String s){
        System.out.println(s);
    }
}
類名 :: 靜態方法名
public class Test{
    public static void main(String[] args){
        //lambda表達式使用:
        Arrays.asList(new String[] {"a", "c", "b"}).stream().forEach(s -> Test.println(s));
        //靜態方法引用:
        Arrays.asList(new String[] {"a", "c", "b"}).stream().forEach(Test :: println);
    }
    
    public static void println(String s){
        System.out.println(s);
    }
}
類名 :: 實例方法名
public class Test{
    public static void main(String[] args){
        String[] strArray = {"a", "c", "b"};
        //lambda表達式使用:
        Arrays.sort(strArray, (s1,s2) -> s1.compareToIgnoreCase(s2));
        //類名 :: 實例方法名引用:
        Arrays.sort(strArray, String::compareToIgnoreCase);
    }
}
1.2 構造器引用
類名 :: new
// Lambda表達式
name -> new Person(name)
    
// 方法引用
Person::new
1.3 數組引用
類型[] :: new
// Lambda表達式
length -> new int[length]

// 方法引用
int[]::new

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、 引言 對於一個多人團隊來說,制定一個統一的規範是必要的,因為個性化的東西無法產生良好的聚合效果,規範化可以提高編碼工作效率,使代碼保持統一的風格,以便於代碼整合和後期維護。 二、 HTML/CSS規範 2.1 瀏覽器相容 根據公司業務要求而定,一般:主流程測試:Chrome 30+、IE9+; ...
  • 結構型模式 適配器模式 類適配器和對象適配器 結構型模式 結構型模式的重點在於如何通過靈活的體系組織不同的對象,併在此基礎上完成更為複雜的類型(或者類型系統),而參與組合的各類型之間始終保持儘量鬆散的結構關係。 結構型模式包括以下幾種: 適配器模式 橋接模式 組合模式 裝飾模式 外觀模式 享元模式 ...
  • 前段時間做了個node全棧項目,服務端技術棧是 nginx + koa + postgresql。其中在centos上搭建環境和部署都挺費周折,部署測試伺服器,接著上線的時候又部署生產環境伺服器。這中間就有很多既無聊又費精力,吃力不討好的"體力活"。所以就開始思考怎麼自動化這部分搭建部署的工作,也就 ...
  • 1 #include <emscripten/bind.h> 2 #include <string> 3 4 using namespace std; 5 using namespace emscripten; 6 7 class xClass { 8 public: 9 // 構造方法; 10 x ...
  • 繼golang第一天後,今天學習下golang的變數、常量、數據類型和控制流語句。 做過其他編程語言(比如JavaScript,java,python)項目的話,其實很好理解變數、常量、數據類型和控制流。 變數也被稱為“變數”,是反映事物運動變化狀態的量,比如匯率、房貸利率、貸款利率。 常量也被稱“ ...
  • 一、函數名的應用 ​ 函數名的定義和變數的定義幾乎一致,在變數的角度,函數名其實就是一個變數,具有變數的功能:可以賦值;但是作為函數名他也有特殊的功能就是加上()就會執行對應的函數,所以我們可以把函數名當做一個特殊的變數 1、函數名指向的是函數的記憶體地址 ​ 函數名 + ()就可以執行次函數 def ...
  • #知識點 操作系統的啟動知識和中斷的建立與初始化 涉及到Intel 806386寄存器,AT&T彙編,gcc內聯彙編,C函數堆棧,Makefile等知識 筆記主要按照操作系統的啟動和中斷的建立兩個部分來記錄 ##理論課的介紹 ###系統啟動 當CPU剛加電初始化時,CS:IP寄存器根據設定的初始值跳 ...
  • 認識 Spring Cloud Gateway Spring Cloud Gateway 是一款基於 Spring 5,Project Reactor 以及 Spring Boot 2 構建的 API 網關,是 Spring Cloud 微服務生態的主要組件之一。Spring Cloud Gatew ...
一周排行
    -Advertisement-
    Play Games
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...