在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
}
}
可以从堆栈跟踪中获取此信息,还是有其他方法?
(请注意,我需要能够在运行时执行此操作,并且实际上无法更改基类的源,这将是我的调试类的一个功能,它事先不知道源)
最佳答案
我认为使用标准 Java API 不可能实现这一点。
您可以做的是使用 AspectJ,在调用方法处放置一个切入点,保存参数,在被调用方法处放置一个切入点并传递参数。
另一个选项(稍微更高级)是使用自定义的字节码重写类加载器来保存原始参数,并将它们作为额外参数传递给下一个方法。这可能需要一两天的时间来实现。合适的框架是 BCEL或ASM .
关于java - 如何获取传递给调用此方法的方法的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27885792/