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



实际上有两个问题。

第一个是 - 我如何获得具有"this"的 id (my.package.MyClass@3e7bfc04)(在方面内部,使用 pjp.getTarget() 来获取"this")。

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

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

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

您可以使用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);

最新更新