IntelliJ IDEA
 
获取 IntelliJ IDEA

分析Java Stream操作

最后修改时间:2023 年 1 月 17 日

Java 8 Streams 有时可能难以调试。发生这种情况是因为它们要求您插入额外的断点并彻底分析流内的每个转换。IntelliJ IDEA 提供了一个解决方案,让您可视化 Java Stream 操作中发生的情况。

让我们用一个以函数式风格编写的简单程序来演示该功能的工作原理。

顾名思义,该PrimeFinder应用程序可以查找素数。您可以使用程序参数指定起始编号和要检查的候选者数量。检查逻辑由 Java 8 Stream 处理。

现在,如果我们查看程序输出,我们会看到额外的数字。

尽管函数式风格可能很简洁,但调试起来并不总是那么容易。要了解这些错误数字的来源,请使用流调试器功能。

对流的检查为我们提供了有关问题原因的线索。我们传递了一个方法引用filter,它返回了一个额外的值。bug 的搜索现在缩小到操作的范围PredicatefilterPrimeTest.isPrime()方法。

请注意,流跟踪不会超出流的终端操作。这意味着如果有进一步的链接,例如使用,则从“流跟踪”Optional对话框中将看不到它。