如何获取调用者(或调用者的调用者,或调用堆栈中更深的)实例ID - my.package.MyClass@3e7bfc04

时间:2012-06-08 09:49:22

标签: java call stack-trace aspectj

实际上有两个问题。

首先是 - 如何获得这样的id(my.package.MyClass@3e7bfc04)具有'this'(在方面内部,使用pjp.getTarget()获取'this')。

第二个是 - 如何在当前程序执行点(其他类的某个方法,或更深层次)获取调用者的实例id。我可以使用

获得调用堆栈
StackTraceElement [] trace = Thread.currentThread().getStackTrace();

然后决定是否有我需要的来电。然后我想获得调用者的实例ID,但不知道如何获得它。

1 个答案:

答案 0 :(得分:0)

您可以使用Java ReflectionStackTraceElement

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);