可能用一个代码示例来说明更容易理解:
- public static void main(String[] args) throws Exception {
- Class c = String.class;//得到String类的Class对象
- Method m = c.getMethod("charAt", new Class[] {int.class});//得到String类中定义的参数为int的charAt方法的Method对象
- //下面即为m调用invoke方法
- Object[] objs = { new Integer(1) };//invoke第二个参数objs是个Object[]
- char ch = (char)m.invoke("abc", objs);//invoke方法第一个参数为调用m(charAt())这个方法的对象,第二个参数为m(charAt())这个方法的参数,所以这句代码等价于"abc".charAt(1);
- System.out.println(ch);//验证结果为b与"abc".charAt(1)等价
- //注意:如果上述代码中得到的方法对象m是一个静态方法,那么m.invoke()方法的第一个参数直接写null就可
- }
复制代码 |