lambda強調的是「做什麼」而不是「怎麼做」,所以凡是可以根據上下文推導得知的資訊,都可以省略。
public
static
void
main
(string[
] args)
1.簡化引數型別,可以不寫引數型別,但是必須所有引數都不寫
noreturnmultiparam lamdba1 =
(a, b)
->
;
lamdba1.method(1, 2);
2.簡化引數小括號,如果只有乙個引數則可以省略引數小括號省略規則:
noreturnoneparam lambda2 = a -
>
; lambda2.
method(1
);
3.簡化方法體大括號,如果方法體只有一條語句,則可以省略方法體大括號
noreturnnoparam lambda3 =()
-> system.out.
println
("簡化方法體大括號");
lambda3.
method()
;
4.如果方法體只有一條語句,並且是 return 語句,則不能省略方法體大括號。如要省略大括號,則
return關鍵字也要一起省略。
returnoneparam lambda4 = a -
> a+3;
system.out.
println
(lambda4.
method(5
)); returnmultiparam lambda5 =
(a, b)
-> a+b;
system.out.
println
(lambda5.
method(1
,1))
;
九、練習:使用lambda省略格式
仍然使用前文含有唯一makefood抽象方法的廚子cook介面,在下面的**中,請使用lambda的省略格式呼叫invokecook方法,列印輸出「吃飯啦!」字樣:
public
class
demo01
private
static
void
invokecook
(cooker c)
}
傳統寫法:
public
class
demo02
;// 匿名內部類
comparator
comp =
newcomparator
()};
arrays.
sort
(array, comp)
;// 第二個引數為排序規則,即comparator介面例項
for(person person : array)
}}
lambda寫法:
public
class
demo02
; arrays.
sort
(array,
(person p1,person p2)
->);
for(person person : array)
}}
lambda 表達的簡化
package com.dingha.lambda public class testlambda2 簡化1.引數型別 love a 簡化2.簡化括號 love a 簡化3.簡化花括號 love a system.out.println i love you a love.love 521 inte...
C 利用Lambda表示式樹簡化函式呼叫
沒有使用表示式樹的 公式引數名稱 var parameternamegroup getgroupsetupparameters formulaelements,parameternamegroup 公式引數範圍 var parameterrange getgroupsetupparameters f...
無縫快取讀取簡化 僅Lambda表示式傳遞委託
之前寫了一篇 無縫的快取讀取 雙儲存快取策略,其中使用了兩個儲存位址交替提供快取資料。更改儲存介質至以下兩個屬性 namespace chcache 是否正在更新 public bool isupdating 這裡儲存區用於儲存要快取的實體內容,而isupdating則標識其是否正在更新。對於快取類...