2012-06-08 1 views
1

На самом деле есть два вопроса.Как получить номер вызывающего абонента (или вызывающего абонента или глубже в стеке вызовов) идентификатор экземпляра - [email protected]

Первый из них - как я могу получить такой идентификатор ([email protected]), имеющий «это» (внутри аспекта, используя pjp.getTarget(), чтобы получить «это»).

Второй - как в текущей точке выполнения программы (какой-либо метод другого класса или глубже), чтобы получить идентификатор экземпляра вызывающего. Я могу получить стек вызовов, используя

StackTraceElement [] trace = Thread.currentThread().getStackTrace(); 

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

+0

нашел одно решение, чтобы получить опорный ID: Строка = Integer.toHexString хэш-код (System.identityHashCode (pjp.getTarget())); но ... он не равен ClassName @ HashCode, как я вижу в отладчике. – ru5t

ответ

0

Вы можете использовать Java Reflection и StackTraceElement.

StackTraceElement[] elements = new Throwable().getStackTrace(); 

    String calleeMethod = elements[0].getMethodName(); 
    String callerMethodName = elements[1].getMethodName(); 
    String callerClassName = elements[1].getClassName(); 

    System.out.println("CallerClassName=" + callerClassName + " , Caller method name: " + callerMethodName); 
    System.out.println("Callee method name: " + calleeMethod); 
+0

это правда, что я могу получить className как my.package.myClass. Я уже делаю это, так как я размещен в теме, но мне нужно знать, что ___instance___ этого класса вызывает текущий метод. – ru5t