前段時間,堆疊長發布了一篇關于 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開發手冊(嵩山版)》最新發布,速速下載!
覺得不錯,別忘了隨手點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/164751.html
標籤:Java
