A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© wangkerui 中级黑马   /  2014-7-1 23:24  /  1378 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wangkerui 于 2014-7-2 22:13 编辑

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

2 个回复

倒序浏览
同学,这个张老师已经说得很清楚了啊,多看看视频啊。

个人理解,反射就方法操作对象,正常的是对象操作方法。很明显反射可以操作所有的对象,对象只能操作其本身的方法,这样扩展性大大加强。
回复 使用道具 举报
可能用一个代码示例来说明更容易理解:
  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.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马