我正在使用paranamer.jar来获取方法的参数名称。但它没有得到任何参数名称。
Class c = Class.forName("com.soa1.MyClass");
Class[] argTypes = { java.lang.String.class };
Method method=ABC.class.getMethod("getData",argTypes);
Paranamer paranamer = new CachingParanamer();
String[] parameterNames = paranamer.lookupParameterNames(method,false);
答案 0 :(得分:3)
参数名称是否来自某处?根据ParaNamer的文档,它使用几种方法来获取参数名称:
__PARANAMER_DATA
字段。显然,这只适用于你的班级有这样一个领域。.class
文件中的调试信息。显然,只有在使用调试信息编译您的类时,这才有效。@Named
注释。显然,这仅适用于方法参数包含此类注释的情况。如果这些都不适用于您的班级,那么抱歉,参数名称将无法使用。
答案 1 :(得分:0)
使用此:
Paranamer paranamer = new AdaptiveParanamer();
取而代之的是:
Paranamer paranamer = new CachingParanamer();
如果还没有工作,请告诉我,因为我也遇到了paranamer的麻烦 - 在一位巴西朋友的帮助下,我已经了解了它是如何运作的。见啊!
答案 2 :(得分:0)
在编译时保留调试信息
如果您正在使用eclipse进行编译,请在project-properties-java compiler
中检查选项keep debug information如果您使用javac add -g选项进行编译
并在您的代码中使用Paranamer paranamer = new AdaptiveParanamer();