2010-07-28 3 views
12

Я хотел бы узнать, можно ли получить доступ к стеку вызовов из метода, чтобы узнать, какой метод в пакете называется тем, в котором мы находимся сейчас?Доступ к стеклу вызовов Java

Возможно, существует другой способ сделать это?

Спасибо,

ExtremeCoder

P.S. Это все в Java

ответ

18

Существует способ:

Thread.currentThread().getStackTrace() 

Но не должно быть причиной, чтобы сделать это иначе, чем для целей отладки.

+1

+1: Конечно, не должно меняться поведение на основе вызывающего, но это как раз то, как это сделать. Кроме того, если вы застряли с 1.4, то вам нужно futz с исключениями, чтобы получить информацию; стоит переходить на Java5 вместо того, чтобы делать подобные хаки IMO. –

+0

О, другой случай для того, чтобы делать вещи с чтением стека, - это если вы используете контексты безопасности, но гораздо лучше использовать инструменты политики безопасности, которые у вас уже есть для этого. –

+0

Ответ правильный, но я не согласен с этим только для отладки. В моем приложении я написал обертку в Log4j, которая отправляет сообщения регистрации в приложение в соответствии с именем вызывающего абонента. Таким образом, вы можете добавить сообщение журнала только с одной строкой, без явного вызова в Logger.getLogger() 'в коде. Вы можете назвать объект ведения журнала целью отладки, но в любом случае. – jutky

Смежные вопросы