在IntelliJIDEA中调试Java8真的很好吃酌情使用。留言区也有人说IntelliJIDEA已经支持Java8Stream调试了,因为我很少调试,所以我就用IntelliJIDEA来演示如何在Java8中调试Stream链式调用。先写一个Java8Stream的例子:/**来源:Java技术栈*/publicstaticvoidmain(String[]args){Stream.of(100,200,300,400,500).mapToLong(e->e*10).filter(e->e>2000).forEach(System.out::println);}这里只演示了一种创建Stream的方法,请点这里阅读Java8创建Stream的10种方法。本程序是先构建一个5个数字的Stream,然后每个数字*10,然后过滤掉大于2000的数字进行打印。如何调试每个链调用的过程?首先在第一行设置断点,然后进入调试模式运行。当断点进入后,在调试窗口点击TraceCurrentStreamChain按钮:然后自动进入当前Streamtrace调试窗口,会显示每条链调用的详情Tabs,点击每条Tab可以看到每一步对应的跟踪结果.如下图:也可以点击左下角的FlatMode,进入flat模式,一次性显示所有trace结果:OK,Java8Stream调试没问题,不过我还没找到像这样的调试方法可选链调用。例如下面的Optional例子:/**Source:JavaTechnologyStack*/publicstaticvoidmain(String[]args){Stringstring=Optional.of("hi,").map(e->e+"Java").map(e->e+"Technology").map(e->e+"Stack").get();System.out.println(string);}调试如图:不幸的是TraceCurrentStreamChain按钮是灰色的,不能进入,因为那个按钮只能用于Stream调试。那么如何调试这样的非Stream链式调用呢?进入断点后,可以选中一些需要调试的链码片段,然后右键选择EvaluateExpression菜单(ALT+F8)进入表达式计算窗口:点击Evaluate按钮开始计算:计算正确,表达式可以自由编辑。很强大。
