在Java 7中动态访问方法参数



是否有可能在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
  ...
}

基本上,在这种级别上没有任何变化,唯一的语言级别变化是在项目硬币。

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

http://paranamer.codehaus.org给出了参数名。这是另一个框架。我使用Maven的"shade"插件,将类拉入我正在构建的东西中,以便最终用户没有传递依赖关系。

相关内容

  • 没有找到相关文章

最新更新