java Lambda表示式的使用

2021-08-21 06:36:35 字數 2597 閱讀 2877

如題,因為博主也是最近才接觸到lambda表示式的(ps 在這裡汗顏一會)。我並不會講解它的原理,誠然任何一件事物如果理解原理的話,使用它必將更加容易。但博主在學習的時候,大多數時候都是學會怎麼用,然後在細究原理。就像你騎自行車之前,難道首先還要研究自行車的原理麼?

首先lambda表示式的最簡單應用如下

lambda表示式法

string lam= "初次相識lambda";

new thread(() -> system.out.println(lam)).start();

傳統方法

string tradition="傳統方法";

new thread(new runnable()

}).start();

輸出結果

很簡潔有沒有?省略了好多**是不是,在這裡 你可以發現」,lambda表示式和在thread建立乙個匿名類的作用是一樣。我們可以這樣認為lambda表示式本身代表了乙個匿名類。

這就是lambda最大的作用,當然lambda表示式只能建立介面inte***ce物件。 建立類是不行的,抽象類也是不行的 ,只要是類都是不行的。

首先,我定義了乙個自定義的介面,可以用來測試

@functionalinte***ce

public inte***ce lam ;

//介面的靜態方法

static void test1()

}

使用lambda表示式 你首先要知道的 

lambda表示式只能是介面inte***ce的建立(ps從上面的例子可以看出來,runnable是介面,可以檢視源**),並且這個介面只能包含乙個方法(除了default方法和static方法)。在介面中建立default方法和static方法都必須要實現方法體如下圖

如果你怕自己的定義的介面不符合lambda表示式的規範 ,你可以在介面inte***ca 上面新增註解@functionalinte***ce

3.lambda表示式的規範表示格式(parameters) ->。在某些時刻,你還可以簡化這個格式 

//介面定義的方法無引數時候,並且你想要執行操作也只有一句**的時候,lambda會自動返回一句**,並且可以不用加{}

lam lam1=()->system.out.println("無引數");

你可以發現後面的大括號{ }沒了,這是因為後面**如果只有一句的話,是可以省略 的

我們把lam介面定義的呼叫方法引數修改一下,多出了乙個string型別的形參s

//lambda表示式呼叫的方法

void bda(string s);

這時候 我們如果使用lambda表示式,則可以這樣

//介面定義的方法有引數時候,並且你想要執行的操作也只有一句**的時候

lam lam1=e->system.out.println(e);//這一句還有簡化版本 lam lam1=system.out::println;

lam1.bda("4556");

你又會發現,前面的()中括號也沒了,這是因為當引數只有乙個的時候,是可以省略()的。

當然也有你要執行很多**的時候,那這時候可以這樣

//介面定義的方法有引數時候,並且你想要執行的操作有很多句**的時候

lam lam1 = (string e) -> ;

lam1.bda("test+");

輸出結果如下

當然你還會問lambda表示式能不能返回東西呢?這是肯定能的,首先我們再把上面的lam介面方法修改一下

//lambda表示式呼叫的方法

string bda(string s);

讓bda方法返回乙個string值,這次如果我們用lambda的話
//介面定義的方法有返回值的時候

lam lam1=s ->;

lam1.bda("test1");

system.out.println(lam1.bda("test2"));

執行的結果:

總結 lambda表示式 就是用來建立乙個匿名的介面物件,即 它本身就是乙個介面的匿名例項。只不過這個介面 有一些條件限制。

java Lambda表示式學習筆記 2

lambda 和 匿名內部類 如果你曾使用過匿名內部類,也許遇到過這樣的情況 需要引用它所在方法裡的變數。這時,需要將變數宣告為final。將變數宣告為final,意味著不能為其重複賦值。同時也意味著在使用final變數時,實際上是在使用賦給該變數的乙個特定的值。final string str 1...

java lambda表示式推導 帶引數

package com.lidl.com.lidl.web 函式式程式設計 函式式介面 任何介面只包含乙個抽象方法 那麼這個介面就是函式是介面 對於函式式接 們可以通過lambda表示式建立介面物件 推導lambda表示式 public class lambda2 public static voi...

python lambda表示式的介紹和使用

python 允許用 lambda 關鍵字創造匿名函式。匿名就意味著不需要顯式的定義,比如python定義乙個函式要以def開頭,但是我們使用lambda不需要def也能定義乙個函式。然而,作為函式,它們也能有引數。乙個完整的 lambda 語句 代表了乙個表示式,這個表示式的定義體必須和宣告放在同...