黑马程序员技术交流社区
标题:
谁能说说对imethod中invoke()方法的理解
[打印本页]
作者:
陈斌
时间:
2012-3-6 21:03
标题:
谁能说说对imethod中invoke()方法的理解
invoke(Object obj, Object... args)
对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。(这句话理解有点费劲)
我的理解是 返回要调用方法的对象。
作者:
老罗
时间:
2012-3-6 23:03
帮顶
作者:
段玉超
时间:
2012-3-7 09:12
本帖最后由 段玉超 于 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() 被调用时所需要的参数列表。 废话少说 一段代码最管用 我就只写伪代码了:
class MothedInvoke
{
public object commonOn(int arg1,string arg2){
return "arg2"+arg1;
{
}
public class Demo
{
public void main(String[] args){
//正常调用
MothedInvoke mivk = new MothedInvoke();
System.out.print(mivk.commonOn(1,”加油加油”);
// 使用反射调用 ,纯粹是示例
Class classOfM = mivk .getClass();
Mothed m = classOfM.getMothed("commonOn"); //这一步不知道对不对,有没有这个方法,反正就是一个意思获得 Mothed 的实例。
//这一步开始调用方法了 这句话的意思就是 在指定对象(一个MothedInovoke 实例)上调用Mothed(也就是m)表示的底层方法 / /(也就是 commonOn 方法 )
m.invoke(mivk,new Object[]{1,"加油加油"}); // Object数组中 传入的就是参数。
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2