Class类:
public getDeclaredMethod( name, <?>... parameterTypes) throws ,
返回一个 Method对象,该对象反映此 Class对象所表示的类或接口的指定已声明方法。name参数是一个 String,它指定所需方法的简称,parameterTypes参数是 Class对象的一个数组,它按声明顺序标识该方法的形参类型。如果在某个类中声明了带有相同参数类型的多个方法,并且其中有一个方法的返回类型比其他方法的返回类型都特殊,则返回该方法;否则将从中任选一个方法。如果名称是 "<init>” 或 “<clinit>",则引发一个 NoSuchMethodException。
参数:
name- 方法名
parameterTypes- 参数数组
返回:
该类与指定名和参数相匹配的方法的 Method对象
抛出:
- 如果找不到匹配的方法。
- 如果 name为 null
- 如果存在安全管理器 s,并满足下列任一条件:
· 调用 拒绝访问已声明方法
· 调用者的类加载器不同于也不是当前类的类加载器的一个祖先,并且对 的调用拒绝访问该类的包
从以下版本开始:
JDK1.1
Method类:
public invoke( obj,... args)throws , ,
对带有指定参数的指定对象调用由此 Method对象表示的底层方法。个别参数被自动解包,以便与基本形参相匹配,基本参数和引用参数都随需服从方法调用转换。
如果底层方法是静态的,那么可以忽略指定的 obj参数。该参数可以为 null。
如果底层方法所需的形参数为 0,则所提供的 args数组长度可以为 0 或 null。
如果底层方法是实例方法,则使用动态方法查找来调用它,这一点记录在 Java Language Specification, Second Edition 的第 15.12.4.4 节中;在发生基于目标对象的运行时类型的重写时更应该这样做。