【问题标题】:Get Parameter Type Reflection获取参数类型反射
【发布时间】:2013-12-16 21:09:04
【问题描述】:

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

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

【问题讨论】:

    标签: java reflection methods parameters


    【解决方案1】:

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

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

    (当然可以根据需要调整输出。)

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

         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;
          }
        

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

        希望这会有所帮助...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-09-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多