JDK8新特性 Lambda表示式(上)

2021-09-22 22:56:18 字數 1658 閱讀 4020

lambda表示式理解為簡介的表示可傳遞的匿名函式的一種方式。

匿名,與普通的方法不同,沒有明確的名稱;

函式,不像普通方法那樣屬於某個特定的類,但是他和方法一樣都具有引數列表、函式主體、返回型別、還有可能有丟擲異常的列表;

傳遞,可以作為引數傳遞給方法或儲存在變數中;

簡潔,無需像匿名類那樣寫很多的模版**,寫的少而想的多;

例子定義乙個comparator(比較器)物件

箭頭

___|

|> a1.

getweight()

.compareto

(a2.

getweight()

);|_________________|

|_______________________________________|

lambda引數 lambda主體

函式式介面就是只定義了乙個抽象方法的介面

在函式式介面中使用,lambda表示式允許你直接以內聯的形式為函式式介面的抽象方法提供實現,並把整個表示式作為函式式介面的例項。

使用lambda的例項

下面的**只能讀取檔案第一行,是很侷限的,你需要一種方法把行為傳遞給processfile,以便他可以利用bufferedreader執行不同的行為。

public

static string processfile()

throws ioexception

}}

2.1記得行為引數化

上述的需求需要行為引數化,傳遞行為正是lamda的拿手好戲。

2.2使用函式式介面來傳遞行為

建立乙個函式式介面

@functioninte***ce

public

inte***ce

bufferedreaderprocessor()

2.3執行乙個行為

public

static string processfile

(bufferedreaderprocessor p)

throws ioexception

}

2.4傳遞lambda表示式

string oneline =

processfile

((bufferedreader br)

-> br.

readline()

);//處理一行

string oneline =

processfile

((bufferedreader br)

-> br.

readline()

+ br.

readline()

);//處理兩行

jdk8新特性 lambda表示式

1 什麼是lambda表示式?lambda表示式 也叫做閉包 是jdk8中的新語法,它允許我們將函式當成引數傳遞給某個方法或者將 本身作為資料進行處理。2 lambda表示式示例 2.1 用lambda表示式實現runnable 通過匿名內部類方法重寫runnable介面 new thread ne...

JDK8 新特性 Lambda 表示式

lambda 表示式概訴 對介面進行實現呼叫 中代表著介面的入引數 中內容是介面的實現 當 中的引數有切僅有乙個時 本身可以省略 同理 當方法實現有切僅有一行時 本身也可以省略 宣告介面 public inte ce personsaymethod使用介面 public class lambdate...

JDK8新特性之Lambda表示式

lambda表示式主要是替換了原有匿名內部類的寫法,也就是簡化了匿名內部類的寫法。lambda語法結構 引數1,引數2.先看乙個使用匿名內部類定義乙個新執行緒的方法 test public void test1 start for int x 0 x 100 x 使用lambda表示式則可以簡化匿名...