Как расширить функцию оценки кода IntelliJ IDEA CE? - PullRequest
1 голос
/ 19 апреля 2011

Я использую IntelliJ IDEA Community Edition 10 для разработки проекта Java SE.

Моему приложению требуется много времени для запуска, поэтому мой предпочтительный способ отладки кода - Launch -> Stop at breakpoint -> Open, окно оценки кода -> введите некоторый код и посмотрите, что оно возвращает.

Но проблема возникает, когда мой код возвращает большой массив / коллекцию объектов. Я хочу фильтровать объекты по значению поля или другим критериям.

Я мог бы использовать Apache Commons Collections или Google Guava для фильтрации, но оценка кода IntelliJ IDEA не позволяет создавать анонимные классы на лету, которые мне нужны для определения предикатов.

Я мог бы также использовать lambdaJ , но классы объектов в моих огромных коллекциях объявлены как final (и я не могу это изменить), поэтому lambdaJ не может расширять эти классы для своей работы.

Я также пытался использовать BeanShell , но он требует, чтобы я передал код в виде строки, что убивает завершение кода IDEA. Также bsh не может использовать локальные переменные внутри отлаживаемого процесса. Наконец, мне нужно каждый раз указывать полные имена классов.

Может кто-нибудь помочь найти решение этой проблемы? Это может быть какой-то волшебный способ расширить оценку кода IntelliJ IDEA для поддержки анонимных классов или другой способ фильтрации коллекций, которые будут работать в этой ситуации.

Ответы [ 2 ]

0 голосов
/ 19 апреля 2011

Вы можете написать свои собственные методы для фильтрации результатов, как вы хотите. Пока они скомпилированы перед началом отладки, они могут использоваться при оценке. например,

 MyFilter.filter(result()).from(1).to(10) // etc
0 голосов
/ 19 апреля 2011

Вы все еще можете использовать lambdaj, расширив его возможности своими собственными конвертерами, агрегаторами и сопоставителями, как описано здесь:

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

...