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,...