Lambda表達式解讀

本文通過具體案例演示函數式接口Function<T,R>的三種實現方式演變過程。


一、傳統匿名內部類實現

Integer resInt1 = t1(new Function<String, Integer>() {@Overridepublic Integer apply(String s) {int i = Integer.parseInt(s);return i;}
});

實現特點

  1. 顯式創建Function接口的匿名實現類
  2. 完整聲明apply方法的參數類型String
  3. 使用顯式return語句返回結果
  4. 包含完整的花括號和方法體結構

二、基礎Lambda實現

Integer resInt2 = t1((String t) -> {int i = Integer.parseInt(t);return i;
});

優化點

  1. 使用Lambda表達式替代匿名類
  2. 保持顯式參數類型聲明
  3. 保留完整方法體結構
  4. 語法更緊湊但保留核心邏輯

三、精簡Lambda表達式

Integer resInt3 = t1(t -> Integer.parseInt(t));

優化路徑

  1. 參數類型推斷

    • 編譯器通過方法簽名Function<String, Integer>自動推斷t的類型
    • 簡寫為t ->代替(String t) ->
  2. 單表達式優化

    • 當方法體僅包含單個表達式時:
    • 省略return關鍵字
    • 移除花括號
    • 直接寫表達式作為返回值
  3. 方法引用替代(進一步優化)

    Integer resInt4 = t1(Integer::parseInt);
    

    • 使用類方法引用語法
    • 完全消除參數列表
    • 直接綁定靜態方法

核心方法解析

public static Integer t1(Function<String, Integer> fn) {return fn.apply("1"); 
}

執行流程

  1. 接收Function<String, Integer>類型參數
  2. 調用apply方法傳入固定參數"1"
  3. 返回轉換后的Integer結果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80273.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80273.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80273.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

等價無窮小代換

理解&#xff1a; 函數某一點的值可以使用泰勒展開式表示&#xff0c;&#xff08;低階無窮小 高階無窮小&#xff09;&#xff0c;主要有低階無窮小決定。 計算極限的時候&#xff1a; 乘除關系隨便換&#xff0c;不影響各個式子的低階無窮小加減關系&#xff1a; &#xf…

護網HVV初級藍隊面試題總結

struts2原理特征 原理:默認的content-type解析器會把用戶傳來的數據直接當成代碼執行&#xff0c;造成rce特征:ognl表達式&#xff0c;memberaccess字段&#xff0c;可以通過catalina日志過濾關鍵信息查找攻擊特征ongl表達式可以被當作代碼執行&#xff0c;其中的類為defaulta…

Web3 實戰項目項目部署到 GitHub 和上線預覽的完整指南

目錄 &#x1f680; 一、部署到 GitHub ? 前置準備 &#x1f9f1; 部署步驟&#xff1a; 1. 創建一個 GitHub 倉庫 2. 上傳項目文件 方法一&#xff1a;使用 Git 命令行 方法二&#xff1a;直接上傳 &#x1f310; 二、通過 GitHub Pages 免費上線 DApp&#xff08;前端…

3.優惠券秒殺

3.1 全局唯一 ID 當用戶搶購時&#xff0c;就會生成訂單并保存到 tb_voucher_order 這張表中&#xff0c;而訂單表如果使用數據庫自增 ID 就存在一些問題&#xff1a; id 的規律性太明顯 受單表數據量的限制 場景分析一&#xff1a;如果我們的 id 具有太明顯的規則&#xf…

AI日報 · 2025年5月07日|谷歌發布 Gemini 2.5 Pro 預覽版 (I/O 版本),大幅提升編碼與視頻理解能力

1、谷歌發布 Gemini 2.5 Pro 預覽版 (I/O 版本)&#xff0c;大幅提升編碼與視頻理解能力 谷歌于5月6日提前發布 Gemini 2.5 Pro 預覽版 (I/O 版本)&#xff0c;為開發者帶來更強編碼能力&#xff0c;尤其優化了前端與UI開發、代碼轉換及智能體工作流構建&#xff0c;并在WebDe…

Python+ffmpeg 實現給視頻添加字幕

創作靈感 孩子學校經常留作業&#xff0c;需要提交一段錄制的視頻&#xff0c;視頻上要求添加學校、班級、姓名等信息的字幕&#xff0c;手機自帶的相機軟件字幕添加位置要么只能添加在視頻正中&#xff0c;要么無法添加多行文本&#xff0c;要么只能添加在片頭或者片尾&#…

OpenLayers 精確經過三個點的曲線繪制

OpenLayers 精確經過三個點的曲線繪制 根據您的需求&#xff0c;我將提供一個使用 OpenLayers 繪制精確經過三個指定點的曲線解決方案。對于三個點的情況&#xff0c;我們可以使用 二次貝塞爾曲線 或 三次樣條插值&#xff0c;確保曲線精確通過所有控制點。 實現方案 下面是…

Django緩存框架API

這里寫自定義目錄標題 訪問緩存django.core.cache.cachesdjango.core.cache.cache 基本用法cache.set(key, value, timeoutDEFAULT_TIMEOUT, versionNone)cache.get(key, defaultNone, versionNone)cache.add(key, value, timeoutDEFAULT_TIMEOUT, versionNone)cache.get_or_se…

Linux系統管理與編程17:自動化部署ftp服務

蘭生幽谷&#xff0c;不為莫服而不芳&#xff1b; 君子行義&#xff0c;不為莫知而止休。 #virtual用戶管理&#xff1a;passerbyA、captain和admin三個虛擬用戶 # passerbyA只能看&#xff0c;captain可看讀寫上傳&#xff0c;但不能刪除。admin全部權限 [rootshell shell]…

2025python學習筆記

一.Python語言基礎入門 第一章 01.初識Python Python的起源&#xff1a; 1989年&#xff0c;為了打發圣誕節假期&#xff0c;Gudio van Rossum吉多范羅蘇姆&#xff08;龜叔&#xff09;決心開發一個新的解釋程序&#xff08;Python維形&#xff09;1991年&#xff0c;第一個…

STM32單片機的快速成長路徑規劃

一、基礎準備階段&#xff08;1-2周&#xff09; C語言核心技能 重點掌握&#xff1a;指針操作、結構體、枚舉、位操作、函數指針&#xff08;回調函數基礎&#xff09;實踐項目&#xff1a;通過51單片機或STM8完成LED控制、按鍵檢測等基礎項目&#xff0c;熟悉寄存器配置和調試…

torch.nn.init.uniform_

nn.init.uniform_ 是 PyTorch 中用于初始化張量&#xff08;tensor&#xff09;的一個函數&#xff0c;它的作用是將張量的值填充為從均勻分布中采樣的隨機數。 詳細說明&#xff1a; 函數&#xff1a; torch.nn.init.uniform_(tensor, a0., b1.)tensor&#xff1a;需要被初始…

Spring MVC中跨域問題處理

在Spring MVC中處理跨域問題可以通過以下幾種方式實現&#xff0c;確保前后端能夠正常通信&#xff1a; 方法一&#xff1a;使用 CrossOrigin 注解 適用于局部控制跨域配置&#xff0c;直接在Controller或方法上添加注解。 示例代碼&#xff1a; RestController CrossOrigin…

基本句子結構

以下是英語句子五種基本結構的詳細解釋&#xff0c;并附上系動詞的全面分類及示例&#xff1a; ?1. 主謂結構&#xff08;SV&#xff09;? ?結構&#xff1a;主語&#xff08;Subject&#xff09; 不及物動詞&#xff08;Intransitive Verb&#xff09;?核心&#xff1a;…

游戲引擎學習第264天:將按鈕添加到分析器

回顧并為今天的工作做鋪墊 隨著時間的推移&#xff0c;我們的分析器&#xff08;profiler&#xff09;變得越來越強大。我通常會問大家是否記得我們要做什么&#xff0c;今天我們要做的似乎是按鈕相關的功能。 今天的目標是實現按鈕功能。我們從昨天留下的地方繼續&#xff0…

大節點是選擇自建機房還是托管機房

選擇PCDN大節點自建機房還是托管機房&#xff0c;需綜合考量資金實力、技術能力、運維需求、業務規模及合規要求。以下為具體分析&#xff1a; 自建機房的適用場景與考量因素 資金與技術門檻高 自建機房需投入服務器、存儲、網絡設備等硬件&#xff0c;以及機房建設、電力、散…

【SpringBoot】SpringBoot中使用AOP實現日志記錄功能

前言一、AOP基本概念二、項目準備三、實現日志記錄切面1、創建自定義日志注解2、實現日志切面3、配置AOP 四、使用示例1. 在Controller中使用2. 在Service中使用 六、高級配置1. 日志內容格式化2. 異步日志記錄3. 日志脫敏處理 七、代理類生成的核心邏輯問題1&#xff1a; 既然…

linux中的常用命令(一)

目錄 常用的快捷鍵 1- tab鍵:命令或者路徑提示及補全&#xff1b; 2-ctrlc:放棄當前輸入&#xff0c;終止當前任務或程序 3-ctrll;清屏 4-ctrlinsert:復制 5-鼠標右鍵:粘貼&#xff1b; 6-altc:斷開連接/ctrlshift r 重新連接 7-alt1/2/3/等&#xff1a;切換回話窗口 8-上下鍵…

Pycharm(十九)深度學習

一、深度學習概述 1.1 什么是深度學習 深度學習是機器學習中的一種特殊方法,它使用稱為神經網絡的復雜結構,特別是“深層”的神經網絡,來學習和做出預測。深度學習特別適合處理大規模和高維度的數據,如圖像、聲音和文本。深度學習、機器學習和人工智能之間的關系如下圖所…

多視圖密集對應學習:細粒度3D分割的自監督革命

原文標題&#xff1a;Multi-view Dense Correspondence Learning (MvDeCor) 引言 在計算機視覺與圖形學領域&#xff0c;3D形狀分割一直是一個基礎且具有挑戰性的任務。如何在標注稀缺的情況下&#xff0c;實現對3D模型的細粒度分割&#xff1f;近期&#xff0c;斯坦福大學視覺…