<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Lambda的forEach慎用,因為沒辦法跳出循環(huán)體啊

          共 1101字,需瀏覽 3分鐘

           ·

          2022-07-26 22:20

          點擊上方藍色字體,選擇“設為星標”


          回復”學習資料“獲取學習寶典


          # 情景展示



          如上圖所示,我們想要終止for循環(huán),使用return。


          執(zhí)行結(jié)果如下:



          我們可以看到,只有趙六沒被打印出來,后續(xù)的數(shù)組元素依舊被執(zhí)行了。


          也就是說,關(guān)鍵字"return",在這里執(zhí)行的效果相當于普通for循環(huán)里的關(guān)鍵詞continue"。


          # 原因分析


          我們知道,在普通for循環(huán)里面,想要提前結(jié)束(終止)循環(huán)體使用"break";


          結(jié)束本輪循環(huán),進行下一輪循環(huán)使用"continue";


          另外,在普通for里,如果使用"return",不僅強制結(jié)束for循環(huán)體,還會提前結(jié)束包含這個循環(huán)體的整個方法。


          而在Java8中的forEach()中,"break"或"continue"是不被允許使用的,而return的意思也不是原來return代表的含義了。


          我們來看看源碼:



          forEach(),說到底是一個方法,而不是循環(huán)體,結(jié)束一個方法的執(zhí)行用什么?當然是return啦;


          java8的forEach()和JavaScript的forEach()用法是何其的相似


          Java不是萬能的,不要再吐槽它垃圾了。


          # 解決方案


          方案一:使用原始的foreach循環(huán)



          使用過eclipse的老鐵們應該知道,當我們輸入:foreach,再按快捷鍵:Alt+/,就會出現(xiàn)foreach的代碼提示。


          如上圖所示,這種格式的for循環(huán)才是真正意義上的foreach循環(huán)。


          在idea中輸入,按照上述操作是不會有任何代碼提示的,那如何才能在idea中,調(diào)出來呢?



          for循環(huán)可以提前終止。


          方式一:break



          方式二:return(不推薦使用)



          方案二:拋出異常


          我們知道,要想結(jié)束一個方法的執(zhí)行,正常的邏輯是:使用return;


          但是,在實際運行中,往往有很多不突發(fā)情況導致代碼提前終止,比如:空指針異常,其實,我們也可以通過拋出假異常的方式來達到終止forEach()方法的目的。



          如果覺得這種方式不友好,可以再包裝一層。



          這樣,就完美了。


          這里,需要注意的一點是:要確保你forEach()方法體內(nèi)不能有其它代碼可能會拋出的異常與自己手動拋出并捕獲的異常一樣;


          否則,當真正該因異常導致代碼終止的時候,因為咱們手動捕獲了并且沒做任何處理,豈不是搬起石頭砸自己的腳嗎?

          來源 | https://blog.csdn.net/weixin_39597399/article/details/114232746


          -------------  END  -------------
          掃描下方二維碼,加入技術(shù)群。暗號:加群


          瀏覽 41
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  深夜精品福利 | 开心激情五月天网 | 日韩美一级片另类 | 亚洲无aV在线中文字幕 | 嫩草成人影院 |