詳解Java8中的Lambda表達式
Lambda是什么
Lambda表達式,也可稱為閉包,是java8的新特性,作用是取代大部分內(nèi)部類,優(yōu)化java代碼結(jié)構(gòu),讓代碼變得更加簡潔緊湊。
Lambda的基本語法
(expression)->expression 或 (expression)->{statements;}
Lambda最重要特點
用()->{}代碼塊替代匿名內(nèi)部類
//(param)->expression;//(param)->statment;//(param)->{statments};//類型聲明 MathOperation addition = (int a, int b) -> a + b; //不用類型聲明 MathOperation subtraction = (a, b) -> a - b;
例如:用lambda表達式實現(xiàn)Runable接口
//java8之前 new Thread(new Runable() { @Override public void run() { System.out.println("hello"); } }).start(); //java8之后 new Thread( ()->System.out.println("hello") ).start();
代替comparator接口內(nèi)部類
//java8之前 Comparator<Person> comparator = new Comparator(){ public int compare(Person p1, Person p2) { if (p1.getAge() > p2.getAge()) return -1; ..... } } //java8之后 Comparator<Person> comparator = (Person p1, Person p2) -> { if (p1.getAge() > p2.getAge()) return -1; ..... }
是不是代碼變得清爽了許多
Lambda表達式和匿名類的對比
1、this關(guān)鍵字:匿名類的this關(guān)鍵字指向匿名類,而Lambda表達式的關(guān)鍵字指向包圍Lambda表達式的類;
2、編譯方式:Java編譯器將Lambda表達式編譯成類的私有方法,使用了java7的invokedynamic字節(jié)碼指令來動態(tài)綁定這個方法;
最后說一句,Lambda表達式和Java8的新特性Stream()一起使用會更香哦!
以上就是詳解Java8中的Lambda表達式的詳細內(nèi)容,更多關(guān)于Java8中的Lambda表達式的資料請關(guān)注腳本之家其它相關(guān)文章!
- JAVA8 lambda表達式權(quán)威教程
- Java8新特性之Lambda表達式的使用
- Java8的Lambda表達式你真的會嗎
- Java8新特性:Lambda表達式之方法引用詳解
- java8 forEach結(jié)合Lambda表達式遍歷 List操作
- Java8 Lambda表達式模板方法實現(xiàn)解析
- Java8 lambda表達式2種常用方法代碼解析
- Java8 用Lambda表達式給List集合排序的實現(xiàn)
- Java8中Lambda表達式使用和Stream API詳解
- Java8與Scala中的Lambda表達式深入講解
- java8學習教程之lambda表達式的使用方法
- 簡單易懂的java8新特性之lambda表達式知識總結(jié)
相關(guān)文章
SpringCloud超詳細講解微服務(wù)網(wǎng)關(guān)Gateway
這篇文章主要介紹了SpringCloud Gateway微服務(wù)網(wǎng)關(guān),負載均衡,熔斷和限流,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07關(guān)于MVC與SpringMVC的介紹、區(qū)別、執(zhí)行流程
這篇文章主要介紹了關(guān)于MVC與SpringMVC的介紹、區(qū)別、執(zhí)行流程,MVC框架的主要目標是將應(yīng)用程序的業(yè)務(wù)邏輯(Model)與用戶界面(View)分離開來,從而提高應(yīng)用程序的可維護性和可擴展性,需要的朋友可以參考下2023-05-05