0

是否可以在不使用显式字节码操作工具和其他框架的情况下在 Java 7 中的执行时获取方法参数值?

我的 javassist 日志框架需要它。

public void foo(String arg1, String arg2){
  //injected code
  Object[] args;
  args = ???;//get arg1 and arg2 values in current method context
  Logger.logMethodArgs(args);
  //end of injected code
  ...
}
4

2 回答 2

1

http://paranamer.codehaus.org为您提供参数名称。它虽然是另一个框架。我使用 Maven 的“阴影”插件,将类拉到我正在构建的东西中,这样最终用户就没有传递依赖。

于 2011-12-08T15:24:38.263 回答
1

基本上,在那种级别上什么都没有改变,唯一的语言级别变化是在项目硬币中。

当然,在上面的代码中您可以更改String arg1, String arg2String ... args,但这不适用于具有不同类型的参数。解决这个问题的另一种方法是让您的 IDE(例如 Eclipse)使用 AST(抽象语法树)中的信息来生成日志记录语句。任何解析 IDE 都应该能够做到这一点。如果您使用的是文本编辑器,那么程序员可能需要做更多的事情并自己遍历参数的数量。

于 2011-07-11T13:50:22.203 回答