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

标签 java debugging arguments 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
    }
}

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

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

最佳答案

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

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

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

关于java - 如何获取传递给调用此方法的方法的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27885792/

相关文章:

python - 如何在 Python 中解压参数?

在类的所有方法中将参数转换为相同标准的 Pythonic 方式

javascript - 使用 apply 创建一个组合 N 个数组的所有元素的函数

java - 在hadoop中reduce后处理数据

c++ - C++ 上的预处理器重载

python - 如何在 Python 中退出交互模式

Android 调试器错误 (MonoDroid)

java - 使用哪一个 - String 或 StringBuffer 连接

java - 这是否被视为循环依赖(这是一种好习惯)?

java - 如何使用 Apple Developer ID 签署 Java 小程序