получение иерархии вызовов метода с использованием отражений - PullRequest
1 голос
/ 16 апреля 2010

Я использовал отражения Java для получения методов из класса (загрузил эти классы). Теперь я хочу получить иерархию вызовов этих методов. Как я могу использовать опцию иерархии вызовов в IDE затмения для этого? Любые примеры или ссылки? ??

Ответы [ 4 ]

3 голосов
/ 16 апреля 2010

Предлагаемое решение состоит в том, чтобы использовать Thread.currentThread().getStackTrace() для получения текущей трассировки вызывающих абонентов.

Однако вы хотите получить эту информацию не для выполняемого в данный момент метода, а для любого метода любого класса. Это не может быть сделано легко. Я думаю, что вы должны проверить все классы на пути к классам с помощью утилиты байт-кода и сопоставить инструкции вызова. То, на что вы будете тратить слишком много времени, и я уверен, что в этом нет необходимости, если только вы не разрабатываете IDE.

В любом случае, вы можете получить источники Eclipse или NetBeans и посмотреть, как они там реализованы.

2 голосов
/ 16 апреля 2010
StackTraceElement[] stackTrace = new Throwable().getStackTrace();
0 голосов
/ 16 апреля 2010

Создайте исключение в методе, который находится в корне иерархии. Тогда вы можете поймать исключение и printStackTrace().

Я уверен, что было бы более чистое решение, чем это. Но это тоже сработает.

0 голосов
/ 16 апреля 2010

Вы можете использовать объект StackTrace.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...