日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

面試官:說說Lambda表達式底層原理?

來源: 責編: 時間:2024-09-10 09:51:14 174觀看
導讀Lambda 表達式是 Java 8 引入的一種簡潔的表示匿名方法的方式,使用它可以用于替代某些匿名內部類對象,從而讓程序更簡潔,可讀性更好。但 Lambda 表達式的底層是如何實現的呢?接下來我們一起來看。1.未Lambda表達式未使用

abC28資訊網——每日最新資訊28at.com

Lambda 表達式是 Java 8 引入的一種簡潔的表示匿名方法的方式,使用它可以用于替代某些匿名內部類對象,從而讓程序更簡潔,可讀性更好。但 Lambda 表達式的底層是如何實現的呢?接下來我們一起來看。abC28資訊網——每日最新資訊28at.com

1.未Lambda表達式

未使用 Lambda 表達式之前,我們創建一個線程,可以這樣寫:abC28資訊網——每日最新資訊28at.com

Thread t1 = new Thread(new Runnable() {    @Override    public void run() {        System.out.println("t1");    }});t1.start();

其中 Runnable 匿名內部類,查看 Runnable 源碼,我們可以看到 Runnable 的實現如下:abC28資訊網——每日最新資訊28at.com

abC28資訊網——每日最新資訊28at.com

(1)什么是匿名內部類?

匿名內部類是在 Java 中定義的一個沒有名稱的內部類。它通常在一個類的成員位置或者方法體內直接定義,并且立即實例化。abC28資訊網——每日最新資訊28at.com

匿名內部類的主要用途在于簡化代碼,避免為了實現一個簡單的功能而定義一個完整的類。它特別適用于只需要一次使用的類,比如實現一個接口的單方法(即函數式接口)的場合。abC28資訊網——每日最新資訊28at.com

PS:自從 Java 8 引入 Lambda 表達式后,很多原本使用匿名內部類的地方可以被更簡潔的 Lambda 表達式替代。abC28資訊網——每日最新資訊28at.com

上面代碼中的 new Runnable 就是一個標準匿名內部類的使用。abC28資訊網——每日最新資訊28at.com

(2)什么是@FunctionalInterface?

@FunctionalInterface 是 Java 8 引入的一個注解,它用于標記一個接口為函數式接口abC28資訊網——每日最新資訊28at.com

函數式接口是指只包含一個抽象方法的接口。這個注解雖然不是必需的,但它提供了一種明確的方式告訴編譯器和開發者,這個接口是設計為函數式接口的。abC28資訊網——每日最新資訊28at.com

@FunctionalInterface 注解的作用如下:abC28資訊網——每日最新資訊28at.com

  • 編譯時檢查:當一個接口被標記為 @FunctionalInterface 時,編譯器會檢查該接口是否只有一個抽象方法。如果不符合函數式接口的定義(即存在多個抽象方法),編譯器會報錯,提醒開發者修正。這為開發者提供了明確的編譯時保障,確保所標記的接口確實符合函數式接口的要求。
  • 代碼明確性:即使不加 @FunctionalInterface 注解,只要接口符合函數式接口的定義,它仍然可以被視為函數式接口。但注解的存在增加了代碼的明確性和可讀性,使得其他開發者更容易理解該接口的設計意圖。
  • 支持 Lambda 表達式:函數式接口的主要目的是為了支持 Lambda 表達式。通過 Lambda 表達式,開發者可以以更簡潔的方式實現函數式接口的抽象方法,從而減少模板代碼,使代碼更加簡潔和易于理解。由于 Lambda 表達式本身不包含類型信息,Java 編譯器需要一種機制來確定 Lambda 表達式對應的目標類型。函數式接口就扮演了這一角色——Lambda 表達式可以被賦值給任何兼容的函數式接口類型,編譯器會依據接口的唯一抽象方法來推斷 Lambda 表達式的參數類型和返回類型。

在 Java 標準庫中,有許多使用 @FunctionalInterface 注解的接口,如 java.util.function 包下的 Function、Predicate、Consumer 等,這些接口都是函數式接口,廣泛用于數據處理、過濾、轉換等操作。此外,在 Spring Boot 框架中,也經常使用函數式接口來定義事件監聽器、回調函數等。abC28資訊網——每日最新資訊28at.com

2.使用Lambda表達式

未使用 Lambda 表達式之前,我們創建一個線程是這樣寫的:abC28資訊網——每日最新資訊28at.com

Thread t1 = new Thread(new Runnable() {    @Override    public void run() {        System.out.println("t1");    }});t1.start();

而用了 Lambda 表達式,我們可以這樣寫:abC28資訊網——每日最新資訊28at.com

Thread t1 = new Thread(() -> { System.out.println("t1"); });t1.start();

從上述代碼可以看出,當我們使用 Lambda 表達式之后,代碼就變得更簡潔和優雅了。abC28資訊網——每日最新資訊28at.com

3.Lambda詳解

Lambda 表達式的語法形式如下:abC28資訊網——每日最新資訊28at.com

(parameters) -> expression

或者是:abC28資訊網——每日最新資訊28at.com

(parameters) -> { statements; }

以上語法含義如下:abC28資訊網——每日最新資訊28at.com

  • 參數列表:在圓括號內的部分,用于定義傳遞給 Lambda 體的參數。參數列表可以為空,也可以包含多個參數,參數之間用逗號隔開。
  • 箭頭符號是 Lambda 表達式的分隔符,將參數列表與表達式或語句塊分隔開。
  • Lambda 體:包含了具體的執行邏輯,可以是一個表達式或是一個由多個語句組成的代碼塊。

(1)使用場景

Lambda 表達式主要用于執行函數式接口(Function Interface),即只有一個抽象方法的接口。常見的函數式接口包括 java.util.function 包下的 Predicate、Function、Consumer 等。abC28資訊網——每日最新資訊28at.com

(2)舉個例子

假設我們有一個List,并且我們想要對這個列表進行過濾操作,只保留偶數元素。使用 Lambda 表達式可以非常方便地實現這一功能:abC28資訊網——每日最新資訊28at.com

import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class Main {    public static void main(String[] args) {        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);        // 使用 Lambda 表達式過濾出偶數        List<Integer> evenNumbers = numbers.stream()                                           .filter(n -> n % 2 == 0)                                           .collect(Collectors.toList());        System.out.println(evenNumbers); // 輸出 [2, 4, 6, 8]    }}

在這個例子中,n -> n % 2 == 0 是一個 Lambda 表達式,它接受一個整數 n 作為輸入參數,并返回一個布爾值。這個 Lambda 表達式被用作 filter 方法的參數,該方法期望一個 Predicate類型的函數式接口實例。abC28資訊網——每日最新資訊28at.com

4.Lambda底層原理

Lambda 底層運行原理如下:abC28資訊網——每日最新資訊28at.com

  1. 在程序運行時,會在類中生成一個匿名內部類,匿名內部類會實現接口,并重寫接口中的抽象方法。
  2. 類中會生成一個靜態方法,靜態方法中的代碼就是 Lambda 表達式中的代碼。
  3. 匿名內部類重寫的抽象方法,會調用上一步的靜態方法,從而實現 Lambda 代碼的執行。

所以,綜合來說,Lambda 表達式其實是匿名內部類的語法糖,這個語法糖在程序執行時會進行兌現,也就是生成匿名內部類并進行任務執行。abC28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-112795-0.html面試官:說說Lambda表達式底層原理?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 微服務為什么要容器化?

下一篇: 十個 Python 列表和索引結合的高級搜索技術

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
另类天堂av| 久久久蜜臀国产一区二区| 亚洲高清电影| 亚洲精品久久久久| 亚洲女同在线| 久久久久亚洲综合| 欧美精品精品一区| 欧美午夜无遮挡| 国产乱子伦一区二区三区国色天香| 国内免费精品永久在线视频| 亚洲精品乱码久久久久久| 亚洲一区欧美激情| 久久亚洲综合网| 国产精品国产亚洲精品看不卡15| 国产综合久久久久久| 日韩网站在线| 久久精品视频一| 欧美日韩国产色综合一二三四| 国产欧美日韩综合一区在线观看 | 亚洲日本va午夜在线电影| 国产精品99久久久久久人| 久久精品国产在热久久| 亚洲精品你懂的| 亚洲在线成人| 榴莲视频成人在线观看| 欧美性淫爽ww久久久久无| 精品91在线| 亚洲视频免费在线| 麻豆成人综合网| 国产精品一区二区三区四区| 亚洲激情成人| 久久国产视频网| 欧美色综合网| 亚洲第一二三四五区| 亚洲欧美日韩国产一区二区三区| 免费精品视频| 国产一区二区三区丝袜| 国产综合网站| 在线综合亚洲欧美在线视频| 久久久一本精品99久久精品66| 欧美日韩在线播放一区二区| 欧美性猛片xxxx免费看久爱| 在线观看国产日韩| 亚洲欧美色婷婷| 欧美日韩精品一区二区天天拍小说| 激情久久久久久久| 午夜视频在线观看一区二区三区| 欧美激情一区| 亚洲大片精品永久免费| 久久精品99无色码中文字幕| 国产精品美腿一区在线看| 亚洲精品一区在线观看| 久久免费视频这里只有精品| 国产精品永久免费视频| 国产精品99久久久久久久女警| 欧美大片一区| 1000精品久久久久久久久| 欧美影视一区| 国产精品一国产精品k频道56| 9i看片成人免费高清| 欧美大尺度在线| 亚洲第一二三四五区| 久久综合五月天婷婷伊人| 国产一区二区成人久久免费影院| 亚洲欧美日产图| 国产精品视频xxxx| 亚洲婷婷免费| 欧美视频观看一区| 一区二区久久久久| 欧美日韩精品三区| 亚洲精品自在久久| 欧美精品18+| 亚洲精品欧洲| 欧美激情日韩| 亚洲精品一区二区三区99| 欧美成人一区二区三区片免费| 在线免费精品视频| 蜜臀va亚洲va欧美va天堂| 在线国产亚洲欧美| 快she精品国产999| 在线 亚洲欧美在线综合一区| 久久久国产精彩视频美女艺术照福利 | 久久精品一本| 国语对白精品一区二区| 久久精品中文字幕一区二区三区| 国产视频一区二区在线观看 | 欧美日韩一区二区三区免费看| 亚洲久久在线| 欧美视频久久| 亚洲综合欧美日韩| 国产精品一香蕉国产线看观看| 午夜精品在线视频| 国产一区二区久久| 久久免费视频这里只有精品| 亚洲电影免费观看高清完整版在线观看 | 欧美一区二区网站| 国产亚洲激情| 麻豆国产精品va在线观看不卡| 亚洲国产成人不卡| 欧美精品www| 亚洲调教视频在线观看| 国产精品日韩欧美一区二区三区 | 欧美日韩一区二区三区在线 | 国产精品分类| 亚洲欧美中文另类| 黑人巨大精品欧美一区二区| 麻豆精品一区二区av白丝在线| 亚洲精品国产精品国自产观看| 欧美日韩视频在线第一区| 亚洲自拍高清| 韩国av一区二区三区四区| 欧美成人日韩| 亚洲在线成人精品| 黄色亚洲免费| 欧美精品在线极品| 亚洲欧美日韩国产综合精品二区| 国产在线欧美| 欧美激情中文不卡| 亚洲欧美影院| 亚洲成色777777在线观看影院| 欧美日韩亚洲国产精品| 欧美一区二区三区四区高清 | 伊人久久久大香线蕉综合直播| 欧美第一黄色网| 亚洲午夜小视频| 狠狠入ady亚洲精品| 欧美日本一区二区三区| 欧美一区二区观看视频| 91久久精品www人人做人人爽| 欧美午夜无遮挡| 久热精品在线| 亚洲欧美成人一区二区在线电影 | 在线成人激情视频| 欧美日韩免费观看中文| 久久都是精品| 日韩亚洲在线观看| 国产亚洲二区| 欧美日本精品| 久久精品视频免费| 野花国产精品入口| 国内精品免费在线观看| 欧美日韩亚洲综合| 久久在线视频| 亚洲欧美日韩天堂| 亚洲欧洲日本国产| 国产日韩精品一区二区三区| 欧美激情一区二区| 久久九九久精品国产免费直播 | 欧美激情视频一区二区三区免费 | 欧美日韩在线播放| 久久亚洲精选| 亚洲欧美日本精品| 99在线视频精品| 亚洲国产成人av| 国产午夜精品一区二区三区视频| 欧美日产国产成人免费图片| 久久久久免费观看| 亚洲欧美日韩国产一区| 日韩视频精品在线| 一区二区三区在线视频播放| 国产精品视频yy9299一区| 欧美精品v日韩精品v韩国精品v | 亚洲大片在线观看| 国产一区二区三区精品久久久| 欧美日韩综合视频| 欧美激情亚洲自拍| 卡一卡二国产精品| 久久激情综合网| 亚洲影视综合| 一区二区高清在线观看| 亚洲人成高清| 在线不卡中文字幕| 精品av久久久久电影| 国产日产欧产精品推荐色 | 亚洲尤物在线| 艳妇臀荡乳欲伦亚洲一区| 亚洲高清激情| 激情文学综合丁香| 国产亚洲一区二区精品| 国产精品午夜国产小视频| 欧美四级电影网站| 欧美日韩裸体免费视频| 欧美激情视频网站| 欧美成人免费在线视频| 老司机午夜精品视频| 久久久久久久网站| 久久aⅴ国产欧美74aaa| 校园春色综合网| 亚洲综合大片69999| 日韩视频―中文字幕| 亚洲欧洲一区二区在线播放| 精品91在线| 亚洲第一区在线观看| 激情五月婷婷综合| 永久91嫩草亚洲精品人人| 精品动漫av| 伊人天天综合| 在线欧美视频| 亚洲国产成人久久| 91久久午夜| 亚洲理论在线| 一本色道久久综合狠狠躁篇怎么玩 | 欧美手机在线| 国产精品久久久999|