Java:如何将参数传递给调用此方法的方法?

Tom*_*Tom 18 java debugging arguments inflection stack-trace

在java中,可以获取调用当前方法的类和方法(获取StackTrace的方法).

我的问题是,我可以获取传递给调用此方法的方法的参数吗?

我需要这个用于调试目的.

例如:

baseClass {
   initialFunc(input) {
       var modifiedInput = input + " I modified you";
       otherClass.doSomething(modifiedInput);
   }
}

otherClass {
    doSomething(input)  {
         //GET THE ARGUMENTS PASSED TO THE METHOD OF THE CLASS THAT CALLED THIS METHOD
    }
}
Run Code Online (Sandbox Code Playgroud)

可以从堆栈跟踪中获取此信息,还是有其他方法?

(注意,我需要能够在运行时执行此操作,并且实际上无法更改baseClass的源代码,这将是我的调试类的一个功能,它不事先知道源代码)

谢谢.

aio*_*obe 4

我不认为使用标准 Java API 可以实现这一点。

您可以做的是使用 AspectJ,在调用方法处放置切点,保存参数,在被调用方法处放置切点并传递参数。

另一个选项(稍微更高级)是使用自定义的字节码重写类加载器来保存原始参数,并将它们作为额外参数传递给下一个方法。这可能需要一两天的时间来实施。合适的框架是BCELASM