詳解Java8中的Lambda表達(dá)式
Lambda是什么
Lambda表達(dá)式,也可稱為閉包,是java8的新特性,作用是取代大部分內(nèi)部類,優(yōu)化java代碼結(jié)構(gòu),讓代碼變得更加簡(jiǎn)潔緊湊。
Lambda的基本語(yǔ)法
(expression)->expression 或 (expression)->{statements;}
Lambda最重要特點(diǎn)
用()->{}代碼塊替代匿名內(nèi)部類
//(param)->expression;//(param)->statment;//(param)->{statments};//類型聲明
MathOperation addition = (int a, int b) -> a + b;
//不用類型聲明
MathOperation subtraction = (a, b) -> a - b;
例如:用lambda表達(dá)式實(shí)現(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表達(dá)式和匿名類的對(duì)比
1、this關(guān)鍵字:匿名類的this關(guān)鍵字指向匿名類,而Lambda表達(dá)式的關(guān)鍵字指向包圍Lambda表達(dá)式的類;
2、編譯方式:Java編譯器將Lambda表達(dá)式編譯成類的私有方法,使用了java7的invokedynamic字節(jié)碼指令來(lái)動(dòng)態(tài)綁定這個(gè)方法;
最后說(shuō)一句,Lambda表達(dá)式和Java8的新特性Stream()一起使用會(huì)更香哦!
以上就是詳解Java8中的Lambda表達(dá)式的詳細(xì)內(nèi)容,更多關(guān)于Java8中的Lambda表達(dá)式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- JAVA8 lambda表達(dá)式權(quán)威教程
- Java8新特性之Lambda表達(dá)式的使用
- Java8的Lambda表達(dá)式你真的會(huì)嗎
- Java8新特性:Lambda表達(dá)式之方法引用詳解
- java8 forEach結(jié)合Lambda表達(dá)式遍歷 List操作
- Java8 Lambda表達(dá)式模板方法實(shí)現(xiàn)解析
- Java8 lambda表達(dá)式2種常用方法代碼解析
- Java8 用Lambda表達(dá)式給List集合排序的實(shí)現(xiàn)
- Java8中Lambda表達(dá)式使用和Stream API詳解
- Java8與Scala中的Lambda表達(dá)式深入講解
- java8學(xué)習(xí)教程之lambda表達(dá)式的使用方法
- 簡(jiǎn)單易懂的java8新特性之lambda表達(dá)式知識(shí)總結(jié)
相關(guān)文章
SpringBoot 如何從配置文件讀取值到對(duì)象中
這篇文章主要介紹了SpringBoot 如何從配置文件讀取值到對(duì)象中,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Springboot集成Tika實(shí)現(xiàn)文檔解析
Tika是一款A(yù)pache開(kāi)源的,跨平臺(tái),支持多品種文本類型的內(nèi)容檢測(cè)和提取工具,本文將介紹Springboot如何集成Tika實(shí)現(xiàn)文檔解析,需要的可以參考下2024-11-11
springboot 通過(guò)代碼自動(dòng)生成pid的方法
這篇文章主要介紹了springboot 通過(guò)代碼自動(dòng)生成pid的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Java 字符數(shù)組轉(zhuǎn)字符串的常用方法
文章總結(jié)了在Java中將字符數(shù)組轉(zhuǎn)換為字符串的幾種常用方法,包括使用String構(gòu)造函數(shù)、String.valueOf()方法、StringBuilder以及Arrays.toString()方法,每種方法都有其適用的場(chǎng)景和性能特點(diǎn),感興趣的朋友跟隨小編一起看看吧2025-01-01
MyBatis-plus使用lambda條件構(gòu)造器報(bào)錯(cuò)問(wèn)題及解決
這篇文章主要介紹了MyBatis-plus使用lambda條件構(gòu)造器報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
java HashMap和HashTable的區(qū)別詳解
這篇文章主要介紹了java HashMap和HashTable的區(qū)別詳解的相關(guān)資料,需要的朋友可以參考下2016-12-12
Java實(shí)現(xiàn)threadLocal線程池獲取
本文主要介紹了Java實(shí)現(xiàn)threadLocal線程池獲取,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07

