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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨银川 黑马帝   /  2011-12-27 14:30  /  2427 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨银川 于 2011-12-30 13:09 编辑

在反射技术中会用到invoke,感觉很难理解它的用法,谁可以解释一下啊

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

4 个回复

倒序浏览
jdk中对invoke的定义
public Object invoke(Object obj, Object... args)
              throws IllegalAccessException,
                     IllegalArgumentException,
                     InvocationTargetException

先得到某一方法 如:Method  methodCharAt = String.getClass.getMethod("charAt","int.class");
然后   方法.invoke(对象,参数列表);
如method.invoke(str1,1);

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
杨旭 黑马帝 2011-12-27 15:21:25
藤椅
Object invoke(Object obj, Object... args)
          对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。
回复 使用道具 举报
invoke这个方法就是调用委托,MSDN上的解译是:
Control.Invoke 方法
在拥有此控件的基础窗口句柄的线程上执行委托。

------------------------------------------------------------
用invoke调用用的委托方法,是被Controller控制的,如果Controller出现了错误,invoke就会报错,然后停止调用的委托,
就和一个进程和线的关系差不多。
回复 使用道具 举报
付星 黑马帝 2011-12-27 18:07:30
报纸
在方法区里有生成的Class文件
每个类型对象可以通过getClass()获得这一个份,而这个Class类中保存是类的结构定义,如:它的访问修饰是什么、它的成员字段、它的成员方法等,这个字段和方法又由一个个类封装起来,它们像一面镜子,照射出你定的类结构
下面有个例子
public class Test {
        public synchronized static void main(String[] args) throws Exception {
                Person p=new Person();
                Class<?> clazz=p.getClass();
                Method m=clazz.getMethod("say");//先得到一个指定的方法对象
                m.invoke(p);//调用方法时是执行哪个对象的方法
        }
}
class Person
{
        private String name;
        private int age;
        public void say() {
                System.out.println("Em");
        }
}

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

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