2017-09-11 18 views
0

这是一个奇怪的问题:IntelliJ - 是否可以在手表中使用循环?或在自定义类渲染器中?

我需要调试代码,它使用复杂的价值对象,并经常收集他们。但是我一次只对某些对象成员感兴趣。从概念上讲,假设我需要观察公交车上每个人的每一条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个屏幕长的成员和子成员的树并不是很令人兴奋。

谢谢。

回答

2

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

在你的情况,你可以尝试使用流将它融入手表的表情,一样的东西:

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

然而,这可能是缓慢的每一步评估...

代码段可用在渲染器表达式中,但是您需要用全新的类替换整个班级的孩子,例如: renderers setup

+0

谢谢。这非常有帮助! 在Java类型的渲染器中,我应该能够声明渲染类型是java.util.ArrayList ?我在List上解析错误,但也许我忘记了一些东西。 (我意识到我不清楚这一点:在我的例子中的总线不是'class Bus extends ArrayList ',而是一个非泛型的ArrayList扩展,在声明时用进行参数化。) – DailyFrankPeter

+0

编辑问题以阐明公交车使用泛型。 – DailyFrankPeter

+0

啊,这不会在IntelliJ 14.1.5中工作,对吧?渲染器中的代码片段是比这更新的功能吗?可惜的是,我们仅限于此版本的内部插件原因。 – DailyFrankPeter

相关问题