实际上有两个问题。
第一个是 - 我如何获得具有"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);