IntelliJ IDEA 调试 Java 8,实在太香了

开发 后端
前段时间发布了一篇关于 Java 8 Optional.map 的实用文章,留言区就有的人说 Java 8 的语法糖不方便调试,还要视情况使用。

前段时间,栈长发布了一篇关于 Java 8 Optional.map 的实用文章,留言区就有的人说 Java 8 的语法糖不方便调试,还要视情况使用。

IntelliJ IDEA 调试 Java 8,实在太香了

留言区也有人说 IntelliJ IDEA 早已支持 Java 8 Stream 调试,因为我平时也很少调试,那么我就以 IntelliJ IDEA 来演示下如何调试 Java 8 中的 Stream 链式调用吧。

先写一段 Java 8 Stream 示例:

  1. /* 
  2. * 来源:Java技术栈  
  3. */ 
  4. public static void main(String[] args) { 
  5.     Stream.of(100200300400500
  6.             .mapToLong(e -> e * 10
  7.             .filter(e -> e > 2000
  8.             .forEach(System.out::println); 

这里只演示了一种 Stream 创建方式,Java 8 创建 Stream 的 10 种方式请点击这里进行阅读。

这个程序是先构建一个 5 个数字的 Stream, 然后再对每个数字 * 10,再筛选出大于 2000 的数字进行打印。

如何调试每个链式调用的过程呢?

先在第一行打个断点,然后进入调试模式运行,当断点进入时,点击调试窗口的 Trace Current Stream Chain 按钮:

IntelliJ IDEA 调试 Java 8,实在太香了

然后自动进入当前 Stream 跟踪调试窗口,上面会展示每个链式调用的选项卡,点击各个选项卡可以看对应每步的跟踪结果。

如下面所示:

IntelliJ IDEA 调试 Java 8,实在太香了
IntelliJ IDEA 调试 Java 8,实在太香了
IntelliJ IDEA 调试 Java 8,实在太香了

也可以点击左下角的 Flat Mode 进入扁平模式,一次性展示所有跟踪结果:

IntelliJ IDEA 调试 Java 8,实在太香了

OK,Java 8 Stream 的调试不是问题了, 但我并没有找到像 Optional 链式调用的调试方式。

比如下面一段 Optional 示例:

  1. /* 
  2. * 来源:Java技术栈  
  3. */ 
  4. public static void main(String[] args) { 
  5.     String string = Optional.of("hi,"
  6.             .map(e -> e + "Java"
  7.             .map(e -> e + "技术"
  8.             .map(e -> e + "栈").get(); 
  9.     System.out.println(string); 

调试如图所示:

IntelliJ IDEA 调试 Java 8,实在太香了

可惜,Trace Current Stream Chain 按钮是灰色状态,不能进入,因为那个按钮只能被 Stream 调试所用。

那像这种非 Stream 链式调用怎么调试呢?

断点进入后,可以选中需要调试的部分链式代码片断,然后右键选中 Evaluate Expression 菜单(ALT + F8)进入表达式计算窗口:

IntelliJ IDEA 调试 Java 8,实在太香了
IntelliJ IDEA 调试 Java 8,实在太香了

点击 Evaluate 按钮开始计算:

IntelliJ IDEA 调试 Java 8,实在太香了

计算无误,该表达式还可以自由编辑,非常强大。

 

 

责任编辑:张燕妮 来源: 今日头条
相关推荐

2023-11-09 08:01:41

Spring缓存注解

2020-10-12 07:30:31

Chrome下载

2021-04-17 07:40:01

N卡驱动应用NVCleanstal

2021-05-30 07:16:43

Edge 91 微软浏览器

2020-04-13 07:30:18

Windows 10Windows操作系统

2023-10-20 09:04:08

JavaScript语言Java

2021-03-20 07:20:49

Windows10操作系统微软

2024-01-26 07:48:10

SpringKafka提升

2024-01-05 13:26:00

KafkaTopicSpring

2021-07-28 14:20:13

正则PythonFlashText

2020-05-25 15:40:23

IntelliJ IDEclipse强Java

2020-11-05 07:52:40

Chrome

2013-06-07 10:18:00

EclipseIntelliJ ID

2020-12-02 16:40:00

微信新功能移动应用

2023-11-13 22:47:58

PythonPathlib

2021-01-03 16:42:52

Windows 10Windows操作系统

2023-11-07 10:36:37

2021-08-31 09:39:06

Python数据工具

2014-11-12 10:10:09

国产操作系统

2020-12-21 07:36:15

缓存数据库缓存层
点赞
收藏

51CTO技术栈公众号