2014-10-24 4 views
2

Скажем, у меня есть метод m в классе. Я пытаюсь найти все методы, которые вызывают m во всем проекте. Подобно инструменту иерархии вызовов eclipse, кроме того, что мне нужно для вывода списка/массива методов. Мне нужно это статически, поэтому я не думаю, что работает трассировка стека. Есть ли способ реализовать это, возможно, используя отражение?Как получить все возможные вызовы метода в Java - как иерархия вызовов

Я прикрепил ссылку к примеру инструмента иерархии вызовов Eclipse, найдя все методы, которые упоминают метод barking() из класса Dog. (Dog.hungry() и Cat.scratching() call barking()).

http://imgur.com/DzkIzCl

+1

Я думаю, что это было уже ответил [здесь] (http://stackoverflow.com/questions/930289/how-can-i-find- все-в-метода-что-вызов-а-дали-метод-в-Java). – Muton

ответ

1

«Стандартный» ява отражение, вероятно, не будет какой-либо помощи по этому вопросу.

Я бы попробовал использовать open source Reflection library.

Вы можете искать способ с помощью:

Set<Member> usages = reflections.getMethodUsages(Method.class) 
+0

Im пытается клонировать проект в мое затмение, поэтому я могу сделать из него банку, но он продолжает рассказывать мне свою пустоту. Я не очень хорошо знаком с добавлением open source libs. Если я использую maven для установки, будет ли это плагин, который откроет мне новое окно eclipse во время выполнения? – Cazs

+0

Попробуйте использовать maven ... он добавит его как собственную зависимость (jar). Но я уверен, что вы можете загрузить его напрямую и добавить его в качестве локальной зависимости к проекту Eclipse. У вас это было? ... как здесь: https://code.google.com/p/reflections/downloads/list – Drejc

+0

Эй, Drejc, поэтому я опустил последнюю банку из ссылки и добавил ее в свой файл jars и вошел в свою java-версию построить путь и добавить его там. Но когда я использую отражения, он спрашивает меня, хочу ли я добавить «import org.reflections.Reflections;» а не "import static org.reflections.ReflectionUtils. *;". Когда я импортирую любой из них, «Set usages = reflections.getMethodUsages (Method.class)« дает мне ошибку. Любая идея, почему ??? Еще раз спасибо – Cazs