詳解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學(xué)習(xí)教程之lambda表達式的使用方法
- 簡單易懂的java8新特性之lambda表達式知識總結(jié)
相關(guān)文章
Java 字符數(shù)組轉(zhuǎn)字符串的常用方法
文章總結(jié)了在Java中將字符數(shù)組轉(zhuǎn)換為字符串的幾種常用方法,包括使用String構(gòu)造函數(shù)、String.valueOf()方法、StringBuilder以及Arrays.toString()方法,每種方法都有其適用的場景和性能特點,感興趣的朋友跟隨小編一起看看吧2025-01-01
MyBatis-plus使用lambda條件構(gòu)造器報錯問題及解決
這篇文章主要介紹了MyBatis-plus使用lambda條件構(gòu)造器報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
java HashMap和HashTable的區(qū)別詳解
這篇文章主要介紹了java HashMap和HashTable的區(qū)別詳解的相關(guān)資料,需要的朋友可以參考下2016-12-12

