天天看點

Lambda 表達式

Lambda 表達式

說明:

lambda中

()裡沒有内容,可以看作形參,如果有參數,可以用逗号隔開。 -> 指要做的事情 {} 指代碼塊,可以了解為我們要做的内容。

使用前提:

有一個接口

接口隻有一個抽象方法

同理,我們可以高仿線程的建立進行練習;

首先建立一個接口

我們想要通過這個接口做一些事情的話,一般的寫法如下:

建立一個實作類

main 進行調用

如此寫法相對複雜

Lambda寫法對比

如果接口有參數的話,在() 中用逗号隔開就好,另外傳入的參數類型是可以省略的。

例如:

這是在兩個參數的時候,如果隻有一個參數的時候,括号都可以省略

省略寫法

如果代碼塊也隻有一條的情況下,大括号,分号也可以省略

如果有值需要return時需要注意

如果有return 時 并且隻有一行代碼塊去掉分号、大括号的同時 ,return也要去掉

如下寫法;

匿名内部類可以是接口,可以是抽象類,也可以是具體類

Lambda表達式隻能是接口,而且接口隻能有一個方法

如果在接口中有多個方法的話,隻能使用匿名内部類的方式

例如:有抽象類,接口,和普通類

有如上内容,我們同時用匿名内部類的方式調用

如上,用匿名内部類的方式是可以通過編譯的;

但是用Lambda表達式的方式無法通過編譯

此次實驗再次說明在使用Lambda表達式的前提是,在接口中, 有且隻有一個方法的時候。

​ 在使用匿名内部類的時候,會單獨的生成一個.class位元組碼檔案,Lambda表達式在運作的時候,會在運作的時候動态生成。

Lambda 表達式

有參總結:

參數類型可以省略不寫,但是多個參數時,要麼不省略,要麼同時省略;

如果參數隻有一個,小括号可以省略

如果代碼塊隻有一條,大括号和分号可以省略,如果有return 也要省略。

再次強調:

使用Lambda 必須要有接口,接口中隻能有一個抽象方法

Lambda 使用時必須要有上下文環境,才能到處Lambda對應的接口; #1

1.上面第二句話可能不好了解。在此解釋