黑马程序员技术交流社区
标题:
关于invoke的使用
[打印本页]
作者:
杨银川
时间:
2011-12-27 14:30
标题:
关于invoke的使用
本帖最后由 杨银川 于 2011-12-30 13:09 编辑
在反射技术中会用到invoke,感觉很难理解它的用法,谁可以解释一下啊
作者:
王昌盛
时间:
2011-12-27 15:17
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);
作者:
杨旭
时间:
2011-12-27 15:21
Object invoke(Object obj, Object... args)
对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。
作者:
房宝彬
时间:
2011-12-27 16:07
invoke这个方法就是调用委托,MSDN上的解译是:
Control.Invoke 方法
在拥有此控件的基础窗口句柄的线程上执行委托。
------------------------------------------------------------
用invoke调用用的委托方法,是被Controller控制的,如果Controller出现了错误,invoke就会报错,然后停止调用的委托,
就和一个进程和线的关系差不多。
作者:
付星
时间:
2011-12-27 18:07
在方法区里有生成的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");
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2