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

在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

}

}

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

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

谢谢。

回答:

我认为使用标准Java API不可能做到这一点。

您可以做的是使用AspectJ,在调用方法上放置一个切入点,保存参数,在被调用方法上放置一个切入点,然后传递参数。

另一个选择(稍微高级一点)是使用自定义的字节码重写类加载器,该加载器保存原始参数,并将其作为额外参数传递给下一个方法。实施可能需要一两天。合适的框架是BCEL或ASM。

以上是 Java:如何获取传递给调用此方法的方法的参数? 的全部内容, 来源链接: utcz.com/qa/412795.html

回到顶部