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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈斌 中级黑马   /  2012-3-6 21:03  /  1875 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

invoke(Object obj, Object... args)
          对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。(这句话理解有点费劲)

我的理解是 返回要调用方法的对象。

评分

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

查看全部评分

2 个回复

倒序浏览
帮顶
回复 使用道具 举报
本帖最后由 段玉超 于 2012-3-7 09:19 编辑

对带有指定参数的指定对象调用由此 Method 对象表示的底层方法
这句话的意思也不难理解。Meithod 是表示 方法的元数据的对象,invoke 的意思是“”调用“”, 那么调用谁呢,当然是调用Method描述的对象也就是Method 对象多标识的方法。而方法是对应与类型(class)的,方法的调用(这里指实例方法)。是已对象实例为基础的。比如说
类Class1 中有一个实例方法 mothed ():void 我们调用这个方法的时候 要经过两步:
1、创建Class1的实例 o,2、o.mothed() 调用;
再看看 反射的过程
   1、获得 class1的 Class 实例(类型元数据实例)。
   2.然后可以获得 c描述 class1的 mothed():void 方法的一个元数据的实例 : Mothed实例。
   3.如果我们想调用Moetd实例描述的方法,就可以使用 invoke方法。
再来看这句话 对带有指定参数的指定对象调用由此 Method 对象表示的底层方法
然后对应 invoke 方法需要的参数 以及实例方法调用的过程来看就不难理解了
invoke 需要传入两个参数 ,第一个是一个Object实例 这句话 对应的就是  指定的对象 也就是 O.mothed()中的O了,如果mothed 方法需要参数,那么invoke 的第二个参数,就是o.mothed() 被调用时所需要的参数列表。 废话少说 一段代码最管用 我就只写伪代码了:
  1.   class   MothedInvoke
  2. {
  3.         public  object  commonOn(int arg1,string arg2){
  4.                return "arg2"+arg1;
  5.         {
  6. }

  7. public class Demo
  8. {
  9.       public void main(String[] args){
  10.            //正常调用
  11.      MothedInvoke  mivk = new MothedInvoke();
  12.      System.out.print(mivk.commonOn(1,”加油加油”);

  13.        // 使用反射调用 ,纯粹是示例
  14.           Class  classOfM  = mivk .getClass();
  15.           Mothed m = classOfM.getMothed("commonOn"); //这一步不知道对不对,有没有这个方法,反正就是一个意思获得 Mothed 的实例。
  16.          //这一步开始调用方法了 这句话的意思就是 在指定对象(一个MothedInovoke 实例)上调用Mothed(也就是m)表示的底层方法      / /(也就是 commonOn 方法 )
  17.          m.invoke(mivk,new Object[]{1,"加油加油"}); // Object数组中 传入的就是参数。

  18.          
  19.       }
  20. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马