Более интеллектуальная иерархия открытых вызовов Eclipse?

Если у меня есть проект Java в Eclipse, я могу щелкнуть правой кнопкой мыши имя метода и «Открыть иерархию вызовов». Предположим, у меня есть два интерфейса, A и B, оба из которых определяют метод x(). Возможно ли, чтобы Eclipse использовал «Иерархию открытых вызовов» более разумным способом, чтобы отображать только вызовы x() из A, но не отображать вызовы из B?


person Michael McGowan    schedule 10.01.2011    source источник


Ответы (3)


Eclipse уже должен это делать. Если вы хотите протестировать его, перейдите в свой интерфейс A, выберите метод x() и запустите на нем 'Open Call Hierarchy'. Сделайте то же самое для метода x() в интерфейсе B. Вы должны получить разные места кода, если у вас нет класса, который реализует оба, чего вы никогда не должны делать. Это не нарушит компиляцию или выполнение, вы просто дважды объявите одну и ту же сигнатуру метода.

person Wagan8r    schedule 10.01.2011
comment
Теперь я начинаю путать себя. Когда я на самом деле попробовал фиктивный пример, он ведет себя так, как вы объясняете, но мой реальный пример с более сложными иерархиями похоже страдает от явления, которое я описал. - person Michael McGowan; 10.01.2011

Я пробовал это с часто переопределяемым методом toString(). Когда я щелкаю по нему правой кнопкой мыши и выбираю «Иерархия открытых вызовов», Eclipse успешно выполняет поиск по всему моему рабочему пространству и возвращает все ссылки на эту сигнатуру метода.

Я часто полагаюсь на то, что Eclipse действует наоборот: я выбираю вызов метода и нажимаю F3, чтобы открыть объявление. Но я не думаю, что Eclipse может двигаться в нужном вам направлении, от объявления к вызывающей ссылке.

person rajah9    schedule 10.01.2011

Это может помочь удалить «Потенциальные совпадения» из результатов поиска. Попробуй это:

Preferences -> General -> Search

И установите флажок «Игнорировать возможные совпадения».

person Andrew Eisenberg    schedule 11.01.2011