Если у меня есть проект Java в Eclipse, я могу щелкнуть правой кнопкой мыши имя метода и «Открыть иерархию вызовов». Предположим, у меня есть два интерфейса, A и B, оба из которых определяют метод x(). Возможно ли, чтобы Eclipse использовал «Иерархию открытых вызовов» более разумным способом, чтобы отображать только вызовы x() из A, но не отображать вызовы из B?
Более интеллектуальная иерархия открытых вызовов Eclipse?
Ответы (3)
Eclipse уже должен это делать. Если вы хотите протестировать его, перейдите в свой интерфейс A, выберите метод x() и запустите на нем 'Open Call Hierarchy'. Сделайте то же самое для метода x() в интерфейсе B. Вы должны получить разные места кода, если у вас нет класса, который реализует оба, чего вы никогда не должны делать. Это не нарушит компиляцию или выполнение, вы просто дважды объявите одну и ту же сигнатуру метода.
Я пробовал это с часто переопределяемым методом toString(). Когда я щелкаю по нему правой кнопкой мыши и выбираю «Иерархия открытых вызовов», Eclipse успешно выполняет поиск по всему моему рабочему пространству и возвращает все ссылки на эту сигнатуру метода.
Я часто полагаюсь на то, что Eclipse действует наоборот: я выбираю вызов метода и нажимаю F3, чтобы открыть объявление. Но я не думаю, что Eclipse может двигаться в нужном вам направлении, от объявления к вызывающей ссылке.
Это может помочь удалить «Потенциальные совпадения» из результатов поиска. Попробуй это:
Preferences -> General -> Search
И установите флажок «Игнорировать возможные совпадения».