Lambda 表達式
說明:
lambda中
()裡沒有内容,可以看作形參,如果有參數,可以用逗号隔開。 -> 指要做的事情 {} 指代碼塊,可以了解為我們要做的内容。
使用前提:
有一個接口
接口隻有一個抽象方法
同理,我們可以高仿線程的建立進行練習;
首先建立一個接口
我們想要通過這個接口做一些事情的話,一般的寫法如下:
建立一個實作類
main 進行調用
如此寫法相對複雜
Lambda寫法對比
如果接口有參數的話,在() 中用逗号隔開就好,另外傳入的參數類型是可以省略的。
例如:
這是在兩個參數的時候,如果隻有一個參數的時候,括号都可以省略
省略寫法
如果代碼塊也隻有一條的情況下,大括号,分号也可以省略
如果有值需要return時需要注意
如果有return 時 并且隻有一行代碼塊去掉分号、大括号的同時 ,return也要去掉
如下寫法;
匿名内部類可以是接口,可以是抽象類,也可以是具體類
Lambda表達式隻能是接口,而且接口隻能有一個方法
如果在接口中有多個方法的話,隻能使用匿名内部類的方式
例如:有抽象類,接口,和普通類
有如上内容,我們同時用匿名内部類的方式調用
如上,用匿名内部類的方式是可以通過編譯的;
但是用Lambda表達式的方式無法通過編譯
此次實驗再次說明在使用Lambda表達式的前提是,在接口中, 有且隻有一個方法的時候。
在使用匿名内部類的時候,會單獨的生成一個.class位元組碼檔案,Lambda表達式在運作的時候,會在運作的時候動态生成。
有參總結:
參數類型可以省略不寫,但是多個參數時,要麼不省略,要麼同時省略;
如果參數隻有一個,小括号可以省略
如果代碼塊隻有一條,大括号和分号可以省略,如果有return 也要省略。
再次強調:
使用Lambda 必須要有接口,接口中隻能有一個抽象方法
Lambda 使用時必須要有上下文環境,才能到處Lambda對應的接口; #1
1.上面第二句話可能不好了解。在此解釋