paramamer不返回参数名



我使用paranamerer .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);

参数名是否来自某处?根据paramamer的文档,它使用几种方法来获取参数名:

  1. 通过__PARANAMER_DATA字段。显然,只有当你的类有这样一个字段时,这才有效。
  2. 通过.class文件中的调试信息。显然,这只适用于使用调试信息编译类的情况。
  3. 通过@Named标注。显然,这只有在方法参数包含这样的注释时才有效。

如果这些都不适用于你的类,那么很抱歉,参数名将不可用。

使用

Paranamer paranamer = new AdaptiveParanamer();

而不是这样的:

Paranamer paranamer = new CachingParanamer();

如果还没有工作,告诉我,因为我也有麻烦与paranamer -在巴西朋友的帮助下,我已经学会了它是如何工作的。再见!

保留编译时的调试信息

如果你正在用eclipse编译,那么在project-properties-java compiler

中勾选选项keep debug information

如果你用javac编译,添加-g选项

和在你的代码中使用Paranamer Paranamer = new AdaptiveParanamer();

相关内容

  • 没有找到相关文章

最新更新