欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java8 lambda表達(dá)式2種常用方法代碼解析

 更新時間:2020年08月06日 11:08:28   作者:志不堅者智不達(dá)  
這篇文章主要介紹了Java8 lambda表達(dá)式2種常用方法代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

與python不一樣,python lambda是定義匿名函數(shù),而在java8中l(wèi)ambda是匿名內(nèi)部類

例1、用lambda表達(dá)式實現(xiàn)Runnable

我開始使用Java 8時,首先做的就是使用lambda表達(dá)式替換匿名類,而實現(xiàn)Runnable接口是匿名類的最好示例??匆幌翵ava 8之前的runnable實現(xiàn)方法,需要4行代碼,而使用lambda表達(dá)式只需要一行代碼。我們在這里做了什么呢?那就是用() -> {}代碼塊替代了整個匿名類。

// Java 8之前:
new Thread(new Runnable() {
  @Override
  public void run() {
  System.out.println("Before Java8, too much code for too little to do");
  }
}).start();

//Java 8方式:
new Thread( () -> System.out.println("In Java8, Lambda expression rocks !!") ).start();

輸出:

too much code, for too little to do
Lambda expression rocks !!

這個例子向我們展示了Java 8 lambda表達(dá)式的語法。你可以使用lambda寫出如下代碼:

(params) -> expression
(params) -> statement
(params) -> { statements }

例如,如果你的方法不對參數(shù)進(jìn)行修改、重寫,只是在控制臺打印點東西的話,那么可以這樣寫:

() -> System.out.println("Hello Lambda Expressions");

如果你的方法接收兩個參數(shù),那么可以寫成如下這樣:

(int even, int odd) -> even + odd

順便提一句,通常都會把lambda表達(dá)式內(nèi)部變量的名字起得短一些。這樣能使代碼更簡短,放在同一行。所以,在上述代碼中,變量名選用a、b或者x、y會比even、odd要好。

例2、使用Java 8 lambda表達(dá)式進(jìn)行事件處理

如果你用過Swing API編程,你就會記得怎樣寫事件監(jiān)聽代碼。這又是一個舊版本簡單匿名類的經(jīng)典用例,但現(xiàn)在可以不這樣了。你可以用lambda表達(dá)式寫出更好的事件監(jiān)聽代碼,如下所示:

// Java 8之前:
JButton show = new JButton("Show");
show.addActionListener(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent e) {
  System.out.println("Event handling without lambda expression is boring");
  }
});

// Java 8方式:
show.addActionListener((e) -> {
  System.out.println("Light, Camera, Action !! Lambda expressions Rocks");
});

Java開發(fā)者經(jīng)常使用匿名類的另一個地方是為 Collections.sort() 定制 Comparator。在Java 8中,你可以用更可讀的lambda表達(dá)式換掉丑陋的匿名類。我把這個留做練習(xí),應(yīng)該不難,可以按照我在使用lambda表達(dá)式實現(xiàn) Runnable 和 ActionListener 的過程中的套路來做。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Java開發(fā)實現(xiàn)OAuth安全認(rèn)證的應(yīng)用

    使用Java開發(fā)實現(xiàn)OAuth安全認(rèn)證的應(yīng)用

    這篇文章主要介紹了使用Java開發(fā)實現(xiàn)OAuth安全認(rèn)證的應(yīng)用的方法,OAuth安全認(rèn)證經(jīng)常出現(xiàn)于社交網(wǎng)絡(luò)API應(yīng)用的相關(guān)開發(fā)中,需要的朋友可以參考下
    2015-11-11
  • Java Swing GroupLayout分組布局的實現(xiàn)代碼

    Java Swing GroupLayout分組布局的實現(xiàn)代碼

    這篇文章主要介紹了Java Swing GroupLayout分組布局的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 使用Apache Ignite實現(xiàn)Java數(shù)據(jù)網(wǎng)格

    使用Apache Ignite實現(xiàn)Java數(shù)據(jù)網(wǎng)格

    今天我們來探討如何使用Apache Ignite來實現(xiàn)Java數(shù)據(jù)網(wǎng)格,Apache Ignite是一個高性能的內(nèi)存計算平臺,它提供了分布式緩存、數(shù)據(jù)網(wǎng)格和計算功能,可以顯著提高大規(guī)模應(yīng)用的數(shù)據(jù)處理性能,感興趣的小伙伴跟著小編一起來看看吧
    2024-08-08
  • Java編程中線程池的基本概念和使用

    Java編程中線程池的基本概念和使用

    這篇文章主要介紹了Java編程中線程池的基本概念和使用,多線程編程是使Java程序?qū)崿F(xiàn)并發(fā)的一個重要手段,需要的朋友可以參考下
    2015-11-11
  • Spring3.1.1+MyBatis3.1.1的增、刪、查、改以及分頁和事務(wù)管理

    Spring3.1.1+MyBatis3.1.1的增、刪、查、改以及分頁和事務(wù)管理

    這篇文章主要介紹了Spring3.1.1+MyBatis3.1.1的增、刪、查、改以及分頁和事務(wù)管理的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • java多線程詳細(xì)總結(jié)

    java多線程詳細(xì)總結(jié)

    以下小編就對java中的多線程進(jìn)行了詳細(xì)的總結(jié)分析,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • Java壓縮文件工具類ZipUtil使用方法代碼示例

    Java壓縮文件工具類ZipUtil使用方法代碼示例

    這篇文章主要介紹了Java壓縮文件工具類ZipUtil使用方法代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-11-11
  • Java消息隊列中的Kafka如何保證冪等性

    Java消息隊列中的Kafka如何保證冪等性

    這篇文章主要介紹了Java消息隊列中的Kafka如何保證冪等性,Kafka是一種消息隊列,主要用來處理大量數(shù)據(jù)狀態(tài)下的消息隊列,一般用來做日志的處理,既然是消息隊列,那么Kafka也就擁有消息隊列的相應(yīng)的特性了,需要的朋友可以參考下
    2023-07-07
  • spring boot實戰(zhàn)之使用JSP的示例

    spring boot實戰(zhàn)之使用JSP的示例

    本篇文章主要介紹了spring boot實戰(zhàn)之使用JSP的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 使用Logback日志保存到相對路徑的操作

    使用Logback日志保存到相對路徑的操作

    這篇文章主要介紹了使用Logback日志保存到相對路徑的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論