IntelliJ IDEA - 在不消耗迭代的情况下评估表达式

时间:2017-06-29 02:05:02

标签: java debugging intellij-idea

假设我们在while循环开始时有一个断点,

while ((line = reader.readLine()) != null) {
    // do something with line
}

并且Bufferedreader reader的InputStream具有["there is only one line"]

在IntelliJ IDEA中,评估(Ctrl + U)reader.readLine()将有效消耗"there is only one line",当我从断点恢复时,while循环条件将失败,因为BufferedReader中没有更多行。

有没有办法在不消耗实际行的情况下评估reader.readLine()

2 个答案:

答案 0 :(得分:0)

评估表达式意味着执行它并查看结果,因此reader.readline()总是会消耗一行。

但是,如果可以执行读取操作,您可能需要尝试ready()方法,该方法将返回true

注意。如果读者即将到达EOF,ready()将返回true,因为可以执行读取操作,但会返回null瞬间。

Java Orace Docs: ready()

答案 1 :(得分:0)

如果在Eclipse中有一个函数读取行而不消耗流/阅读器,我会感到惊讶。

一种可能的解决方案,允许您在行while ((line = reader.readLine()) != null) {处设置断点并在进入循环之前检查line的值可能是添加条件断点(在IntelliJ CTRL-F8中)在该行后跟CTRL-SHIFT-F8或右键单击断点图标。)

conditional breakpoint

这样,执行将很快停止line不为空。