IntelliJ - 可以在手表中使用循环吗?或者在自定义类渲染器中?

时间:2017-09-11 14:46:25

标签: java debugging intellij-idea

这是一个奇怪的问题:

我需要调试使用复杂值对象的代码,通常是它们的集合。但我一次只对某些物体成员感兴趣。从概念上讲,假设我需要在公交车的每个人身上观看每个SmallToe。

(给定Bus<Person>class Bus extends ArrayList的一个实例)我想在调试手表中写这个:

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

但是,这当然不会解析('意外的令牌')。手表中的循环甚至是合法的(或者在Intellij自定义java类渲染器中)并且可以以某种方式完成吗?你还有其他方法可以解决这个问题吗?

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

感谢。

1 个答案:

答案 0 :(得分:2)

手表中尚无法实现代码片段,但有一天实现它们没有任何问题。我已提交IDEA-178815,请投票。

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

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

然而,在每一步评估都可能很慢......

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