IntelliJ IDEA 調試 Java 8 Stream,實在太香了!


前段時間,棧長發布了一篇關於 Java 8 Optional.map 的實用文章,留言區就有的人說 Java 8 的語法糖不方便調試,還要視情況使用。

留言區也有人說 IntelliJ IDEA 早已支持 Java 8 Stream 調試,因為我平時也很少調試,那么我就以 IntelliJ IDEA 來演示下如何調試 Java 8 中的 Stream 鏈式調用吧。

先寫一段 Java 8 Stream 示例:

                         /*
* 來源公眾號:Java技術棧 
*/
public static void main(String[] args) {
    Stream.of(100, 200, 300, 400, 500)
            .mapToLong(e -> e * 10)
            .filter(e -> e > 2000)
            .forEach(System.out::println);
}  

這里只演示了一種 Stream 創建方式,Java 8 創建 Stream 的 10 種方式請點擊 這里 進行閱讀。

這個程序是先構建一個 5 個數字的 Stream, 然后再對每個數字 * 10,再篩選出大於 2000 的數字進行打印。

如何調試每個鏈式調用的過程呢?

先在第一行打個斷點,然后進入調試模式運行,當斷點進入時,點擊調試窗口的 Trace Current Stream Chain 按鈕:

然后自動進入當前 Stream 跟蹤調試窗口,上面會展示每個鏈式調用的選項卡,點擊各個選項卡可以看對應每步的跟蹤結果。

如下面所示:

也可以點擊左下角的 Flat Mode 進入扁平模式,一次性展示所有跟蹤結果:

OK,Java 8 Stream 的調試不是問題了, 但我並沒有找到像 Optional 鏈式調用的調試方式。

比如下面一段 Optional 示例:

                         /*
* 來源公眾號:Java技術棧 
*/
public static void main(String[] args) {
    String string = Optional.of("hi,")
            .map(e -> e + "Java")
            .map(e -> e + "技術")
            .map(e -> e + "棧").get();
    System.out.println(string);
}  

調試如圖所示:

可惜, Trace Current Stream Chain 按鈕是灰色狀態,不能進入,因為那個按鈕只能被 Stream 調試所用。

那像這種非 Stream 鏈式調用怎么調試呢?

斷點進入后,可以選中需要調試的部分鏈式代碼片斷,然后右鍵選中 Evaluate Expression 菜單(ALT + F8)進入表達式計算窗口:

點擊 Evaluate 按鈕開始計算:

計算無誤,該表達式還可以自由編輯,非常強大。

雖然沒有像 Stream 這樣專屬的調試面板,使用 Evaluate Expression 也能達到調試鏈式調用的目的吧。關於這個,你還有其他調試方案么?歡迎留言分享!

好了,本次的分享就到這里了,希望對大家有用。覺得不錯,在看、轉發分享一下哦~

關注Java技術棧微信公眾號,棧長將繼續分享好玩的 Java 技術,公眾號第一時間推送,在公眾號后台回復:IDEA,可以獲取歷史 IDEA 教程,都是干貨。

近期熱文推薦:

1. Java 15 正式發布, 14 個新特性,刷新你的認知!!

2. 終於靠開源項目弄到 IntelliJ IDEA 激活碼了,真香!

3. 我用 Java 8 寫了一段邏輯,同事直呼看不懂,你試試看。。

4. 吊打 Tomcat ,Undertow 性能很炸!!

5. 《Java開發手冊(嵩山版)》最新發布,速速下載!

覺得不錯,別忘了隨手點贊+轉發哦!


免責聲明!

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



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