最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java8 lambda表達式2種常用方法代碼解析

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

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

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

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

// 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表達式的語法。你可以使用lambda寫出如下代碼:

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

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

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

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

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

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

例2、使用Java 8 lambda表達式進行事件處理

如果你用過Swing API編程,你就會記得怎樣寫事件監(jiān)聽代碼。這又是一個舊版本簡單匿名類的經(jīng)典用例,但現(xiàn)在可以不這樣了。你可以用lambda表達式寫出更好的事件監(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表達式換掉丑陋的匿名類。我把這個留做練習,應該不難,可以按照我在使用lambda表達式實現(xiàn) Runnable 和 ActionListener 的過程中的套路來做。

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

相關文章

  • SpringBoot設置接口超時的方法小結(jié)

    SpringBoot設置接口超時的方法小結(jié)

    這篇文章主要介紹了SpringBoot設置接口超時的方法小結(jié),包括配置文件,config配置類及相關示例代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Java Calendar類常用示例_動力節(jié)點Java學院整理

    Java Calendar類常用示例_動力節(jié)點Java學院整理

    從JDK1.1版本開始,在處理日期和時間時,系統(tǒng)推薦使用Calendar類進行實現(xiàn)。接下來通過實例代碼給大家詳細介紹Java Calendar類相關知識,需要的朋友參考下吧
    2017-04-04
  • java中throws實例用法詳解

    java中throws實例用法詳解

    在本篇文章里小編給大家分享了一篇關于java中throws實例用法詳解,有興趣的朋友們可以參考學習下。
    2021-01-01
  • OutOfMemoryError內(nèi)存不足和StackOverflowError堆棧溢出示例詳解

    OutOfMemoryError內(nèi)存不足和StackOverflowError堆棧溢出示例詳解

    這篇文章主要為大家介紹了OutOfMemoryError內(nèi)存不足和StackOverflowError堆棧溢出示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • java跳出多重循環(huán)的三種實現(xiàn)方式

    java跳出多重循環(huán)的三種實現(xiàn)方式

    文章主要介紹了Java中跳出多重循環(huán)的三種方式:使用`break`配合標簽、在布爾表達式中添加判斷變量、以及使用`try-catch`制造異常,每種方式都有具體的代碼示例,并輸出了相應的執(zhí)行結(jié)果
    2025-01-01
  • 基于Java?利用Mybatis實現(xiàn)oracle批量插入及分頁查詢

    基于Java?利用Mybatis實現(xiàn)oracle批量插入及分頁查詢

    這篇文章主要介紹了基于Java?利用Mybatis實現(xiàn)oracle批量插入及分頁查詢,文章圍繞主題展開詳細的內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-07-07
  • j2ee之AJAX二級聯(lián)動效果

    j2ee之AJAX二級聯(lián)動效果

    這篇文章主要為大家詳細介紹了j2ee之AJAX二級聯(lián)動效果的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • java8保姆級lambda表達式教程

    java8保姆級lambda表達式教程

    這篇文章主要介紹了Java8之后的Lambda表達式的用法,lambda表達式將大量替代匿名內(nèi)部類的使用,簡化代碼的同時,更突出了原來匿名內(nèi)部類中最重要的那部分包含真正邏輯的代碼,需要的朋友可以參考下
    2023-03-03
  • 淺談為什么重寫equals()就要重寫hashCode()

    淺談為什么重寫equals()就要重寫hashCode()

    困擾我很久的問題,一直不明白為什么重寫equals()方法的時候要重寫hashCode()方法,這次總算弄明白了,作此分享,感興趣的可以了解一下
    2021-10-10
  • spring?boot?使用Mybatis-plus查詢方法解析

    spring?boot?使用Mybatis-plus查詢方法解析

    這篇文章主要介紹了spring?boot?使用Mybatis-plus查詢方法解析,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09

最新評論

尖扎县| 遂宁市| 青铜峡市| 阿拉善盟| 翁牛特旗| 罗平县| 北京市| 清镇市| 枣强县| 太康县| 株洲市| 海南省| 黄冈市| 吉安县| 宁国市| 历史| 观塘区| 奉节县| 溆浦县| 福清市| 元朗区| 葫芦岛市| 区。| 望城县| 巴彦淖尔市| 洞口县| 太康县| 开江县| 深圳市| 无棣县| 东丽区| 资溪县| 武定县| 理塘县| 板桥市| 辽中县| 鄢陵县| 宝丰县| 龙井市| 龙门县| 田东县|