黑马程序员技术交流社区

标题: invoke干嘛用的? [打印本页]

作者: 姚志华    时间: 2011-10-8 19:15
标题: invoke干嘛用的?
invoke干嘛用的?
作者: 鲁蒙    时间: 2011-10-8 19:23
Method 类中的一个方法invoke()  invoke是反射里面用来调用对象的方法的
实例:
userClass.getMethod(obj, Class propertyType)
===================================
getMethod方法第一个参数是String类型,表示方法的名称,后面应该是Class... parameterTypes 表示参数(类型)的列表,
Class...是类似c#里的params关键字,他接受了后面所有的参数,把他们兜放到一个Class数组里(当然参数类型要正确),
适合方法调用方对参数的数量不固定的情况。

Method.invoke(Object obj,Object... args)
==================================
obj - 从中调用基础方法的对象 ,  
args - 用于方法调用的参数,如调用setName(String name)时,invoke时需要传递一个String的实例,如invoke(user,"yigemingzi")


如某方法getName()是类User里的方法  
Method method = User.class.getMethod("getName",null);
User user = new User();
method.invoke(user, null);
两个方法中第二个参数是null是因为getName()方法不需要参数
作者: 鲁蒙    时间: 2011-10-8 19:23
Method 类中方法invoke(),它的定义是:

public Object invoke(Object obj,
   Object... args)
   throws IllegalAccessException,
   IllegalArgumentException,
   InvocationTargetException

作者: 姚志华    时间: 2011-10-8 19:34
鲁蒙 发表于 2011-10-8 19:23
Method 类中方法invoke(),它的定义是:

public Object invoke(Object obj,

谢谢你,下次有问题不用发贴了,省的别人笑我白,呵呵
作者: tintick    时间: 2011-10-8 19:39

invoke是Method类的一个方法(并不是static,所以需要对象来调用),Method对象调用此方法表示调用这个方法,一般用于反射吧,如:
Method method =String.class.getmehtod(  );
method.invoke( );
api里面这样写:
invoke(Object obj, Object... args)
          对带有指定参数的指定对象调用由此 Method 对象表示的底层方法
作者: 巴蜀贤君    时间: 2011-10-8 21:24
呵呵!简单的说就是将反射后得到方法,传参运行!
作者: 王家虎    时间: 2011-10-8 22:53
invoke本身表示引用的意思,当你得到一个类的字节码文件对象后就可以得到这个字节码文件对象的方法的类的对象,当你得到方法的类的对象之后就相当于得到了方法,这是你就可以使用Method的invoke执行这个方法了。
作者: 王家虎    时间: 2011-10-8 22:53
invoke本身表示引用的意思,当你得到一个类的字节码文件对象后就可以得到这个字节码文件对象的方法的类的对象,当你得到方法的类的对象之后就相当于得到了方法,这是你就可以使用Method的invoke执行这个方法了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2