请问:
getDeclaredMethod(String name, Class... parameterTypes) 
返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法。
问题:  这个参数Class... parameterTypes怎么理解
有这样一个例子:
Method m = cls.getDeclaredMethod("doPrint",new Class[] { String.class });文档上是这样解释的:返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法。name 参数是一个 String,它指定所需方法的简称,parameterTypes 参数是 Class 对象的一个数组,它按声明顺序标识该方法的形式参数类型。如果在某个类中声明了带有相同参数类型的多个方法,并且其中有一个方法的返回类型比其他方法的返回类型都特殊,则返回该方法;否则将从中任选一个方法。如果名称是 "<init>” 或 “<clinit>",则引发一个 NoSuchMethodException。 

解决方案 »

  1.   

    反射的时候,有的方法可能同名的有多个,可以通过参数来区别,你说的那个方法就是通过数组将参数类型(CLASS)准确获得你想要的方法。
      

  2.   

    问题:  这个参数Class... parameterTypes怎么理解 ?
    name 是要获得类对象的方法名;
    Class... parameterTypes 是一个name方法的参数数组(无参方法不写,又几个参数就定多长的数组);
    例如 :
    public class Test {
         public String doPrint(String s,int i,Object o)
        {
        }
    }
    这是一个具有3个参数的方法  要获得他的反射方法 应该这样写。
    Class cls = Class.forName(Test.class); 
    Class[] cl = new Class[3];//3是参数个数
    cl[0] = String.class;
    cl[1] = int.class;
    cl[2] = Object.class;
    Method m = cls.getDeclaredMethod("doPrint",cl);这个m 就是用反射获得的方法。 
      

  3.   

    parameterTypes数组 定义你要得到的方法的参数类型和顺序 当你用Method实例invoke时需要赋实参
      

  4.   

    JAVA 方法重载 
     
    在Java 中,同一个类中的2个或2个以上的方法可以有同一个名字,只要它们的参数声明不同即可。在这种情况下,该方法就被称为重载(overloaded ),这个过程称为方法重载(method overloading )。方法重载是Java 实现多态性的一种方式。