黑马程序员技术交流社区

标题: Method.invoke方法的用法 [打印本页]

作者: wangkerui    时间: 2014-7-1 23:24
标题: Method.invoke方法的用法
本帖最后由 wangkerui 于 2014-7-2 22:13 编辑

Method.invoke方法到底是什么意思啊,怎样用啊?

作者: 来自沙沙的我    时间: 2014-7-1 23:54
同学,这个张老师已经说得很清楚了啊,多看看视频啊。

个人理解,反射就方法操作对象,正常的是对象操作方法。很明显反射可以操作所有的对象,对象只能操作其本身的方法,这样扩展性大大加强。
作者: EarlyHeart    时间: 2014-7-2 07:47
可能用一个代码示例来说明更容易理解:
  1. public static void main(String[] args) throws Exception {
  2.                 Class c = String.class;//得到String类的Class对象
  3.                 Method m = c.getMethod("charAt", new Class[] {int.class});//得到String类中定义的参数为int的charAt方法的Method对象
  4.                 //下面即为m调用invoke方法
  5.                 Object[] objs = { new Integer(1) };//invoke第二个参数objs是个Object[]
  6.                 char ch  = (char)m.invoke("abc", objs);//invoke方法第一个参数为调用m(charAt())这个方法的对象,第二个参数为m(charAt())这个方法的参数,所以这句代码等价于"abc".charAt(1);
  7.                 System.out.println(ch);//验证结果为b与"abc".charAt(1)等价
  8.                 //注意:如果上述代码中得到的方法对象m是一个静态方法,那么m.invoke()方法的第一个参数直接写null就可
  9.         }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2