获取参数类型反射

时间:2013-11-30 22:57:43

标签: java reflection methods parameters

我将如何获得参数类型?当我之前尝试classMethods[i].getParameterTypes()时,我的结果最终为Ljava.lang.Class;@4c5bb434,并且每个方法都重复使用不同的值。

classMethods是一个Method数组,它获取该类的所有声明方法。

3 个答案:

答案 0 :(得分:1)

是的,getParameterTypes()返回一个数组 - 每个参数一个元素。只需使用:

for (Class<?> clazz : classMethods[i].getParameterTypes()) {
    System.out.println("Parameter type " + clazz.getName());
}

(当然,根据您的需要调整输出。)

答案 1 :(得分:0)

如果您的参数类型是通用参数,那么这是不可能的,因为Java中的泛型仅在编译时考虑。因此,Java泛型只是某种预处理器。

答案 2 :(得分:0)

所以这就是我要说的。我认为你改变了问题::

 for(int i=0; i < classMethods.length;i++) 
    {
     System.out.println(classMethods[i].getName() + " (" + className + ", " 
     + printParameters((Class<String>[])classMethods[i].getParameterTypes()) +  
     ") -> " + classMethods[i].getReturnType());
    }

printParameters打印方法参数(如果有):

public static String printParameters(Class<String>[] a)
    {
        String temp="";
        if(a!=null)
        {       

        for(int i=0;i<a.length;i++)
        {
            if(temp!="")
            {
                temp+=", "+a[i].getName();
            }
            else
            {
                temp = a[i].getName();
            }
        }
        }
        return temp;
  }

这应该会给你想要的结果。

希望这会有所帮助......