Lambda簡化規則

2021-10-10 05:11:08 字數 1827 閱讀 5044

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則標識其是否正在更新。對於快取類...