JDK 1 8加入的Lambda表示式

2021-10-03 07:08:49 字數 1482 閱讀 3328

前言:

此文只是筆記,為什麼要使用lambda表示式以及它的好處此文將不做深究。

lambda省去物件導向的條條框框,格式由3個部分組成:

lambda表示式的標準格式為:

格式說明:

廢話不多說,上**:

無參無返回

public

inte***ce

cook

public

class

demoinvokecook);

}private

static

void

invokecook

(cook cook)

}

有參有返回

public

inte***ce

calculator

public

class

demoinvokecalc);

}private

static

void

invokecalc

(int a,

int b, calculator calculator)

}

可推導即可省略

lambda強調的是「做什麼」而不是「怎麼做」,所以凡是可以根據上下文推導得知的資訊,都可以省略。例如上例還可以使用lambda的省略寫法:

public

static

void

main

(string[

] args)

省略規則

在lambda標準格式的基礎上,使用省略寫法的規則為:

小括號內引數的型別可以省略;

如果小括號內有且僅有乙個參,則小括號可以省略;

如果大括號內有且僅有乙個語句,則無論是否有返回值,都可以省略大括號、return關鍵字及語句分號。

lambda的語法非常簡潔,完全沒有物件導向複雜的束縛。但是使用時有幾個問題需要特別注意:

使用lambda必須具有介面,且要求介面中有且僅有乙個抽象方法

無論是jdk內建的runnablecomparator介面還是自定義的介面,只有當介面中的抽象方法存在且唯一時,才可以使用lambda。

使用lambda必須具有上下文推斷

也就是方法的引數或區域性變數型別必須為lambda對應的介面型別,才能使用lambda作為該介面的例項。

備註:有且僅有乙個抽象方法的介面,稱為「函式式介面」。

JDK1 8之Lambda表示式

lambda表示式是jdk1.8重要特性之一,其作用是可以減少匿名內部類的使用,使 更加簡潔。並不是所有的介面都可以用lambda表示式,要求介面必須是函式式介面,即介面有且只能有乙個抽象方法,但是可以有多個非抽象方法。jdk 1.8 之前已有的函式式介面 jdk 1.8 新增加的函式介面 publ...

JDK1 8新特性 Lambda表示式

lambda表示式 函式式程式設計思想 物件導向 必須通過物件的形式來做事情.函式式思想 強調做什麼 注重結果 而不是怎麼做.lambda的格式 一些引數 介面中的抽象方法的引數,有就寫上,沒有空著 乙個箭頭 傳遞 把引數傳遞給 中的方法體 一段 重寫介面中的抽象方法的方法體 標準格式 引數型別 引...

jdk1 8新特性 Lambda表示式

要了解lambda表示式,我們先來說說函式式介面 函式式介面 介面中只有乙個抽象方法 有預設方法和靜態方法不影響 lambda表示式就是為了解決函式式介面而誕生的,可以先看乙個例子來了解 現在我們要實現下面介面的drive功能,我們能怎麼做呢?inte ce drive 1.通過一般類實現介面來重寫...