在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(使用前将#替换为@)