0

我正在使用 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);
4

3 回答 3

3

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

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

如果这些都不适用于您的课程,那么抱歉,参数名称将不可用。

于 2013-06-20T01:43:21.340 回答
0

用这个:

Paranamer paranamer = new AdaptiveParanamer();

取而代之的是:

Paranamer paranamer = new CachingParanamer();

如果还没有工作,请告诉我,因为我也遇到了 paranamer 的问题 - 在一位巴西朋友的帮助下,我了解了它是如何工作的。再见!

于 2013-07-03T15:06:26.100 回答
0

编译时保留调试信息

如果您正在使用 Eclipse 进行编译,请检查选项在 project-properties-java 编译器中保留调试信息

如果您使用 javac 进行编译,请添加 -g 选项

并在您的代码中使用 Paranamer paranamer = new AdaptiveParanamer();

于 2013-12-29T10:17:42.537 回答