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

标签 java call stack-trace aspectj

实际上有两个问题。

第一个是 - 我怎样才能获得这样的 id (my.package.MyClass@3e7bfc04) 具有“this”(在方面内部,使用 pjp.getTarget() 来获取“this”)。

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

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

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

最佳答案

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

关于java - 如何获取调用者(或调用者的调用者,或更深入的调用堆栈)实例 ID - my.package.MyClass@3e7bfc04,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10946574/

相关文章:

java - Firebird 和不同版本的 JVM

java - 如何将 CDI 拦截器创建为单例?

java - USSD 网关连接

asp.net - Trace.axd 返回 YSOD 不是自定义错误

android - 如何在android中获取堆栈跟踪c++函数名称

java - 如果文件已存在于 Dropbox 中,如何覆盖该文件?

perl - 如何使用变量名在perl中调用子程序

list - 如何将 Scheme 中的函数应用于另一个函数返回的参数列表?

java - 防止一个方法在另一个方法之前被调用

ios - 如何在 Xcode 堆栈跟踪中查找 NSInternalInconsistencyException 的来源