是否可以在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
...
}
答案 0 :(得分:1)
基本上,在这种水平上没有任何改变,唯一的语言水平变化是项目硬币。
当然,在上面的代码中,您可以将String arg1, String arg2
更改为String ... args
,但这不适用于具有不同类型的参数。另一种方法是让您的IDE(例如Eclipse)使用AST(抽象语法树)中的信息来生成日志记录语句。任何解析IDE都应该能够做到这一点。如果您使用的是文本编辑器,那么程序员可能需要做更多的事情并自己迭代参数的数量。
答案 1 :(得分:1)
http://paranamer.codehaus.org为您提供参数名称。它的另一个框架。我使用' shade' Maven的插件,将类提取到我构建的东西中,以便最终用户没有传递依赖。