如何获取传递给调用该方法的方法的参数?

2024-02-06

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

我可以获得传递给调用此方法的方法的参数吗?

我需要这个来进行调试。

Eg:

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
    }
}

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

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


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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取传递给调用该方法的方法的参数? 的相关文章

随机推荐