java - IntelliJ - 是否可以在 watch 中使用循环?或者在自定义类渲染器中?

标签 java debugging intellij-idea

这是一个奇怪的问题:

我需要调试使用复杂值对象(通常是它们的集合)的代码。但我一次只对对象的某些成员感兴趣。从概念上讲,假设我需要监视公交车上每个人的每个小脚趾。

(给定 Bus<Person> 这是 class Bus extends ArrayList 的实例)我想在调试 watch 中编写此内容:

for(int i=0; i<bus.size(); i++) {
    bus.get(i).getLeg().getSmallToe().getDesc();
}

但是,这当然不会解析(“意外的标记”)。 watch 中的循环是否合法(或在 Intellij 自定义 java 类渲染器中)并且可以以某种方式完成吗?你还有其他办法解决这个问题吗?

替代方案,例如 a) 写 get(x).getLeg().getSmallToe().getDesc();很多时候(单独的 watch )和 b) 必须扩展一棵充满成员和子成员的树(长达 10 个屏幕),这并不是很令人兴奋。

谢谢。

最佳答案

代码片段在 watch 中尚不可能,但是有一天实现它们是没有问题的。我已提交IDEA-178815 ,请投票。

在您的情况下,您可以尝试使用流将其放入监视表达式中,例如:

bus.stream().map(p -> p.getLeg().getSmallToe().getDesc()).toArray()

但是,每一步的评估可能会很慢......

渲染器表达式中可以使用代码片段,但是您需要将整个类子级替换为新的子级,如下所示: renderers setup

关于java - IntelliJ - 是否可以在 watch 中使用循环?或者在自定义类渲染器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46158501/

相关文章:

java - Java中的Selector有什么好处

java - 如何从大量值创建缩放图像

search - WebStorm:搜索不起作用

intellij-idea - 在 IntelliJ IDEA 中看不到项目文件夹

java - Java中按多边形区域裁剪图像

java - 在java中使用数组求多项式的导数

debugging - 无法在 LoadLibraryW 上设置 bp

c# - 如何调试 .NET Windows 服务 OnStart 方法?

debugging - lldb 命令到函数步/跟踪步 : continue until next function call or until current function is returned from

scala - 如何找到定义 Scala 隐式的位置?