一分鍾搞明白java8中的lambda


項目結構是這樣的

User是一個普通的pojo類

 

UserCompare是一個實現了Comprator的類

 

現在我們有一個需求:給一個user組成的list 按照user的年齡排序。實現不難,代碼如下:

 

這種方法由於sort方法的第二個參數是Comparator 所以你要寫一個實現類(我這里是UserCompare類),並且override該接口的實現方法。

java8提供了lambda來簡化,有了lambda程序員從此不加班呀~    

剛才那個Comparator的實現類以及內部若干代碼就都省了,代之以lambda表達式。

另外,IntelliJ會提示你改成更好的寫法

 

實現類里有多少代碼,你就省了多少行代碼。

高興了半天,到底是什么原理呢?其實是java8新提供的語法糖。

 

我們打開java1.8 Comparator的定義,發現了類定義上面多了一個@FunctionalInterface

對,1.8多了一個概念就是FunctionalInterface,這個Comparator就是一個FunctionalInterface

有了這個注解,原來使用實現類的地方就可以代之以lambda表達式。

我水平有限,如果你看到這還沒明白,下圖可以幫助理解,圖1是實現類,圖2是把實現類沒用的地方都抹掉了。

對比一下吧,lambda表達式就是允許你把沒用的代碼都去掉!最少的代碼,一樣的功能!

 

 

 

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM