2.2.3 获取方法

最后一个可以通过反射API获取的元素是方法,这也是最常使用反射API的场景,即获取到一个对象中的方法,并在运行时调用该方法。与之前提到的构造方法和域类似,Class类中也有4个方法用来获取方法,分别是getMethods、getMethod、getDeclaredMethods和getDeclaredMethod。这4个方法的含义类似于获取构造方法和域的对应方法。在得到了表示方法的java.lang.reflect.Method类的对象之后,就可以查询该方法的详细信息,比如方法的参数和返回值的类型等。最重要的是可以通过invoke方法来传入实际参数并调用该方法。代码清单2-19中分别给出了获取和调用对象中的公开和私有方法的示例。需要注意的是,在调用私有方法之前,需要先调用Method类的setAccessible方法来设置可以访问的权限。

代码清单2-19 使用反射API获取和使用公开和私有方法


public void useMethod()throws Exception{

MethodContainer mc=new MethodContainer();

Method public Method=Method Container.class.getDeclaredMethod("publicMethod");

publicMethod.invoke(mc);

Method private Method=Method Container.class.getDeclaredMethod("privateMethod");

privateMethod.setAccessible(true);

privateMethod.invoke(mc);

}


与构造方法和域不同的是,通过反射API可以获取到类中的私有方法。