摘要:語言是強類型面向對象的語言,所以必須提供一種數據類型作為表達式的返回值類型符合中函數格式的定義符合面向對象規則,所以最終表達式要有一個映射成對象的過程。定一個函數式接口我們在接口里定義了一個沒有參數返回值的抽象方法。
在JAVA中,“Lambda 表達式”(Lambda expression)是一個抽象方法的實現。這個抽象方法必須是在接口中聲明的,而且實現類只需要實現這一個抽象方法,我們稱這種接口為函數式接口。Lambda表達式就是函數式接口的實現,來完成對數據的處理。
基本函數的格式JAVA函數通常是我們類中定義的行為,格式如下:
修飾符 返回類型 函數名(參數列表){ 語句塊 return 返回值; }
修飾符:函數的可見性,決定函數的使用范圍
返回類型:函數的輸出信息,與return配合使用
函數名:函數標識
參數列表:函數的輸入信息
語句塊:函數執行的操作
這就是函數的基本格式。
代碼中函數名,返回類型是一定要有的,其他的可有可無。
所以代碼中最簡單的函數定義格式如下:
返回類型 函數名();Lambda表達式格式
我們說Lambda表達式是一個匿名函數,那我們來看一下Lambda表達式的格式。
(參數列表) -> {語句塊}
參數列表:函數的輸入信息
->: Lambda表達式關鍵符(也可以理解成關鍵字)
語句塊:函數執行的操作
“->”是必須有的,我們來看下最簡單的Lambda表達式結構:
() -> {}
Lambda表達式是一個表達式,程序中被作為一個值來使用。JAVA語言是強類型面向對象的語言,所以必須提供一種數據類型作為Lambda表達式的返回值類型、符合JAVA中函數格式的定義、符合面向對象規則,所以最終Lambda表達式要有一個映射成JAVA對象的過程。
函數式接口函數式接口是用來完成Lambda表達式映射成JAVA對象的一種接口,確切的說把接口中僅存的一個抽象方法和Lambda表達式綁定并完成對象的實例化。
那么接口是如何與Lambda表達式建立類型關系的?
接口的抽象方法。下面舉例說明。
定一個函數式接口
/** * @author Stephen Yue */ public interface Nothing { void doNothing(); }
我們在接口里定義了一個沒有參數、返回值的抽象方法。
接口我們定義好了,需要我們定義接口的實現方式。我們選取Lambda表達式來完成這個實現。
// 指定接口中方法的實現過程并創建對象 Nothing nothing = () -> {}; nothing.doNothing();
給Nothing接口中doNothing方法指定了一個空實現的Lambda表達式。即沒有參數、沒有返回值、什么都不做的一個空實現。所以執行之后沒有任何結果。我們改一下實現方式。
Nothing nothing = () -> { System.out.println("hello Lambda!"); }; nothing.doNothing();
新的Lambda表達式實現同樣符合接口中抽象方法定義的要求,不過程序執行完,會在控制臺輸出:hello Lambda!
總結Lambda表達式的出現,提供了新的接口實現方式。接口中抽象方法名字是Lambda表達式的標識符,接口中參數類型對應Lambda表達式的參數類型,接口中返回類型對應Lambda表達式返回類型,Lambda表達式的語句塊來完成抽象方法的邏輯實現。
Lambda表達式的優點:
簡碼
面向函數式編程(也可以理解面向接口編程)
閉包
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70750.html
摘要:在支持一類函數的語言中,表達式的類型將是函數。匿名函數的返回類型與該主體表達式一致如果表達式的主體包含一條以上語句,則表達式必須包含在花括號中形成代碼塊。注意,使用表達式的方法不止一種。 摘要:此篇文章主要介紹 Java8 Lambda 表達式產生的背景和用法,以及 Lambda 表達式與匿名類的不同等。本文系 OneAPM 工程師編譯整理。 Java 是一流的面向對象語言,除了部分簡...
摘要:表達式簡介表達式是一個匿名函數對于而言并不很準確,但這里我們不糾結這個問題。如果表達式的正文有一條以上的語句必須包含在大括號代碼塊中,且表達式的返回值類型要與匿名函數的返回類型相同。 版權聲明:本文由吳仙杰創作整理,轉載請注明出處:https://segmentfault.com/a/1190000009186509 1. 引言 在 Java 8 以前,若我們想要把某些功能傳遞給某些方...
摘要:初體驗下面進入本文的正題表達式。接下來展示表達式和其好基友的配合。吐槽一下方法引用表面上看起來方法引用和構造器引用進一步簡化了表達式的書寫,但是個人覺得這方面沒有的下劃線語法更加通用。 感謝同事【天錦】的投稿。投稿請聯系 tengfei@ifeve.com 本文主要記錄自己學習Java8的歷程,方便大家一起探討和自己的備忘。因為本人也是剛剛開始學習Java8,所以文中肯定有錯誤和理解偏...
摘要:表達式的主要作用就是代替匿名內部類的煩瑣語法。從這點來看,表達式的代碼塊與匿名內部類的方法體是相同的。與匿名內部類相似的是,由于表達式訪問了局部變量,該局部變量相當于與一個隱式的修飾,因此不允許對局部變量重新賦值。 函數式接口 函數式接口(Functional Interface)就是一個只有一個抽象方法(可以包含多個默認方法或多個static方法)的普通接口,可以被隱式轉換為lamb...
摘要:表達式又名閉包匿名函數筆記根據終于在中引入了表達式。函數式接口要介紹中表達式的實現,需要知道什么是函數式接口。但同樣需要保證外部的自由變量不能在表達式中被改變。 Java Lambda 表達式(又名閉包 (Closure)/ 匿名函數 ) 筆記 根據 JSR 335, Java 終于在 Java 8 中引入了 Lambda 表達式。也稱之為閉包或者匿名函數。 showImg(https...
閱讀 939·2021-11-22 12:09
閱讀 3710·2021-09-27 13:36
閱讀 1397·2021-08-20 09:37
閱讀 4016·2019-12-27 12:22
閱讀 2360·2019-08-30 15:55
閱讀 2364·2019-08-30 13:16
閱讀 2822·2019-08-26 17:06
閱讀 3440·2019-08-23 18:32