Lambda表示式詳解

2021-10-06 23:11:45 字數 2285 閱讀 1787

lambda表示式,也可以成為閉包。

lambda允許把函式作為乙個方法的引數(函式作為引數傳遞進方法中)。

lambda對介面的要求

不是所有的介面都可以使用lambda表示式來實現。

介面中只能有乙個必須被實現的方法(抽象方法)。

註解 @functionalinte***ce

用於約束介面內抽象方法的個數,要求介面中的抽象方法只有乙個。這個註解一般會和lambda表示式一起使用。

加上這個註解後,如果介面內有兩個抽象方法則會報錯。

lambda基礎語法

語法形式為() -> {}, **()用來描述引數列表,{}**用來描述方法體,->為lambda運算子。

下面介紹幾個具體的例子。

case 1: 無引數無返回值

首先定義乙個介面,其中包含乙個無參無返回值方法method。

@functionalinte***ce

public

inte***ce

noreturnnoparam

然後在主函式中用匿名內部類的方式實現。

public

class

main};

//呼叫被重寫的方法

noreturnnoparam.

method()

;}}

用lambda表示式簡化上面的例子。

public

class

main

;//呼叫被重寫的方法

noreturnnoparam.

method()

;}}

case 2: 1個引數無返回值

同理我們可以依照上面的方式定義乙個有參無返回值介面。

定義介面

@functionalinte***ce

public

inte***ce

norreturnoneparam

用lambda表示式實現

public

class

main

;//呼叫被重寫的方法

norreturnoneparam.

method(5

);}}

case 3: 1個引數有返回值

定義乙個有string型別返回值,int型別引數的介面。

@functionalinte***ce

public

inte***ce

oneparam

用lambda表示式呼叫該方法

public

class

main

;//列印返回的string型別

system.out.

println

(oneparam.

method(6

));}

}

lambda表示式再簡化

簡化引數型別,但必須所有引數都不寫

//簡化前, a前有int型別修飾

norreturnoneparam norreturnoneparam =

(int a)

->

;//簡化後

norreturnoneparam norreturnoneparam =

(a)-

>

;

簡化引數小括號

norreturnoneparam norreturnoneparam = a -

>

;

簡化引數大括號如果方法只有一條語句

norreturnoneparam norreturnoneparam = a -

>

system.out.

println

("傳入的引數等於:"

+a);

簡化return

//簡化前

oneparam oneparam =

(int a)

->

;//簡化後

oneparam oneparam = a-

>

"傳入的引數等於:"

+a;

Lambda表示式詳解

1 天真熱,程式設計師活著不易,星期天,也要頂著火辣辣的太陽,總結這些東西。2 夸夸lambda吧 簡化了匿名委託的使用,讓你讓 更加簡潔,優雅。據說它是微軟自c 1.0後新增的最重要的功能之一。lambda運算子 所有的lambda表示式都是用新的lambda運算子 可以叫他,轉到 或者 成為 運...

Lambda表示式詳解

1 天真冷啊,程式設計師活著不易,星期天,也要嗖嗖的北風,總結這些東西。2 夸夸lambda吧 簡化了匿名委託的使用,讓你讓 更加簡潔,優雅。據說它是微軟自c 1.0後新增的最重要的功能之一。lambda運算子 所有的lambda表示式都是用新的lambda運算子 可以叫他,轉到 或者 成為 運算子...

Lambda表示式詳解

lambda表示式在很多語言中應用,lambda表示式可以當作委託中的一種變形,委託的構建方便程式設計人員能夠在程式中傳入函式,相當於回掉函式。lambda表示式可以方便的構造匿名函式,如果 中裡面存有大量小的功能函式,而這些函式只被呼叫一次,不妨將他們重構成lambda表示式。比如需要計算a b,...