java - Paranamer 不返回参数名称

标签 java reflection

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

最佳答案

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

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

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

关于java - Paranamer 不返回参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203980/

相关文章:

Java 可变对象作为映射键但使用默认的 hashCode()

Java 按优先级列表排序

java - org.springframework.beans.NotWritablePropertyException

java - 为什么 "while"在普林斯顿的加权快速联合实现中使用

java - 可以将数据类型保存到变量吗? (数据类型 = 整数)?

c# - 使用字典键(作为字符串)在构造函数中设置变量

java - java基础练习

c# - Type.IsSubclassOf() 不适用于 AppDomains?

c# - 将接口(interface)的 ProperyInfo 与类的 PropertyInfo 匹配

.net - 使用反射添加事件处理程序时抛出 TargetException