Java中Lambda表達(dá)式基礎(chǔ)及使用
標(biāo)準(zhǔn)格式:
三要素:形式參數(shù) 箭頭 代碼塊
格式:(形式參數(shù))->{代碼塊}
形式參數(shù):如果多個(gè)參數(shù)用逗號(hào)隔開,無(wú)參留空
->:英文中劃線和大于號(hào)組成
代碼塊:具體要做的事
使用前提:
有一個(gè)接口
接口中有且僅有一個(gè)抽象方法
一、舉例說(shuō)明
1、無(wú)參無(wú)返回
1.1 定義一個(gè)接口
public interface Eatable { void eat(); }
1.2接口實(shí)現(xiàn)類
public class EatableImpl implements Eatable{ @Override public void eat() { System.out.println("一天一蘋果"); } }
1.3 測(cè)試類
public class EatableDemo { public static void main(String[] args) { //主方法調(diào)用useEatable Eatable e = new EatableImpl(); useEatable(e); //匿名內(nèi)部類 useEatable(new Eatable() { @Override public void eat() { System.out.println("一天一蘋果"); } }); //lambda表達(dá)式 useEatable(() -> { System.out.println("一天一蘋果"); }); } private static void useEatable(Eatable e){ e.eat(); } }
2、有參無(wú)返回代碼示例
public interface Eatable { void eat(String name); } public class EatDemo { public static void main(String[] args) { useEat((String name) -> { System.out.println(name); System.out.println("輸出的啥"); }); } private static void useEat(Eatable e){ e.eat("蘋果"); } }
3、有參有返回
public interface Addable { int add(int x,int y); } 1. 2. 3. public class AddableDemo { public static void main(String[] args) { useAddable( (int x,int y ) -> { return x+y; }); } private static void useAddable(Addable a){ int sum = a.add(5, 7); System.out.println(sum); } }
二、簡(jiǎn)單事項(xiàng)
1、省略模式
- 參數(shù)的類型可省略,多個(gè)參數(shù)時(shí)候不可只省略一個(gè);
- 如果參數(shù)有且僅有一個(gè)可省略大括號(hào)和分號(hào);
- 如果代碼塊的語(yǔ)句只有一條,可省略大括號(hào)和分號(hào)(有return時(shí)return也省略掉)
2、注意事項(xiàng)
- 必須要有接口,接口中有且僅有一個(gè)抽象方法
- 必須有上下文環(huán)境,才能推導(dǎo)出Lambda對(duì)應(yīng)的接口:局部變量的賦值、調(diào)用方法的參數(shù)
三、Lambda表達(dá)式和匿名內(nèi)部類的區(qū)別
1、所需類型不同:
- 匿名內(nèi)部類:可以是接口,也可以是抽象類,還可以是具體類
- Lambda表達(dá)式:只能是接口
2、使用限制不同:
- 如果接口中有且僅有一個(gè)抽象類,兩者都可以使用
- 接口中多于一個(gè)抽象類,只能使用匿名內(nèi)部類
3、實(shí)現(xiàn)原理不同:
- 匿名內(nèi)部類:編譯之后,產(chǎn)生一個(gè)單獨(dú)的.class字節(jié)碼文件
- Lambda表達(dá)式:編譯之后,沒(méi)有單獨(dú)的.class字節(jié)碼文件,對(duì)應(yīng)的字節(jié)碼會(huì)在運(yùn)行時(shí)動(dòng)態(tài)的生成
到此這篇關(guān)于Java中Lambda表達(dá)式基礎(chǔ)及使用的文章就介紹到這了,更多相關(guān)Java中Lambda表達(dá)式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java將RTF轉(zhuǎn)換為PDF格式的實(shí)現(xiàn)
本文主要介紹了Java將RTF轉(zhuǎn)換為PDF格式的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Java集合與數(shù)組區(qū)別簡(jiǎn)介及相互轉(zhuǎn)換實(shí)例
這篇文章主要介紹了Java集合與數(shù)組區(qū)別簡(jiǎn)介及相互轉(zhuǎn)換實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01

Java數(shù)據(jù)結(jié)構(gòu)優(yōu)先隊(duì)列實(shí)練

Java操作透明圖片并保持背景透明的實(shí)現(xiàn)