2011-04-19 120 views
1

我正在使用IntelliJ IDEA Community Edition 10开发Java SE项目。如何扩展IntelliJ IDEA CE代码评估功能?

我的应用程序需要很长时间才能启动,所以我最喜欢调试代码的方式是启动 - >在断点处停止 - >打开代码评估窗口 - >输入一些代码并查看返回结果。

但是,当我的代码返回一个大型的数组/对象集合时会出现这个问题。我想要的是通过字段的值或其他标准过滤对象。

我可以使用Apache Commons Collections或Google Guava进行过滤,但IntelliJ IDEA的代码评估不允许创建匿名类,我需要定义Predicates。

我也可以使用lambdaJ,但我巨大集合中的对象类声明为final(并且我无法更改),所以lambdaJ无法扩展这些类的操作。

我也尝试使用BeanShell,但它需要我将代码作为字符串传递,这会导致IDEA的代码完成。另外,bsh不能在被调试的进程中使用局部变量。最后,我必须每次指定完整的类名称。

任何人都可以帮助找到解决这个问题?将IntelliJ IDEA的代码评估扩展为支持匿名类或者以其他方式过滤可以在这种情况下工作的集合可能是一种不可思议的方式。

+0

Jetbrains问题跟踪器[Java评估工作表](http://youtrack.jetbrains.com/issue/IDEABKL-6587)上有功能请求。如果你有类似于我在这里描述的问题,我建议加入它。这不完全相同,但它是朝着正确方向迈出的一步。 – vadipp 2013-01-18 08:26:31

回答

0

这里描述,您仍然可以使用lambdaj用自己的转换器,集成商和匹配器扩展其功能:

http://code.google.com/p/lambdaj/wiki/LambdajExtensibility

+0

感谢@MarioFusco和@PeterLawrey,但这种方式我需要在启动程序之前创建这些过滤设施。在我的情况下,重要的是我刚开始程序,然后开始试验 - 调用方法并查看结果。 – vadipp 2011-04-20 04:17:48

0

你可以写你自己的方法来过滤你怎么想要的结果。只要在开始调试之前编译它们,它们就可以用于评估。例如

MyFilter.filter(result()).from(1).to(10) // etc