Reflection Java 7中的动态访问方法参数

Reflection Java 7中的动态访问方法参数,reflection,dynamic,java-7,Reflection,Dynamic,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 in

在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
  ...
}

基本上,在这种级别上没有任何变化,唯一的语言级别变化是在ProjectCoin中


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

为您提供参数名称。但这是另一个框架。我使用Maven的“shade”插件,将类引入到我正在构建的东西中,这样最终用户就不会有可传递的依赖关系。

谢谢你的回答,我发现这是不可能做到的。。。所以我将使用特定的注入来初始化对参数对象的引用,这样我就可以在注入代码的下一部分中使用这个引用。目前,我正在使用变量名(使用java类调试信息)生成引用初始化代码,稍后我将使用代码解析工具来消除使用调试标志编译的需要。很高兴能提供帮助,如果您对答案满意,请不要忘了接受答案(任何正确的答案,不仅仅是我的答案)。