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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 姚志华 黑马帝   /  2011-10-8 19:15  /  4120 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

invoke干嘛用的?

7 个回复

倒序浏览
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()方法不需要参数

评分

参与人数 1技术分 +2 黑马币 +1 收起 理由
admin + 2 + 1

查看全部评分

回复 使用道具 举报
Method 类中方法invoke(),它的定义是:

public Object invoke(Object obj,
   Object... args)
   throws IllegalAccessException,
   IllegalArgumentException,
   InvocationTargetException
回复 使用道具 举报
鲁蒙 发表于 2011-10-8 19:23
Method 类中方法invoke(),它的定义是:

public Object invoke(Object obj,

谢谢你,下次有问题不用发贴了,省的别人笑我白,呵呵
回复 使用道具 举报

invoke是Method类的一个方法(并不是static,所以需要对象来调用),Method对象调用此方法表示调用这个方法,一般用于反射吧,如:
Method method =String.class.getmehtod(  );
method.invoke( );
api里面这样写:
invoke(Object obj, Object... args)
          对带有指定参数的指定对象调用由此 Method 对象表示的底层方法

评分

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

查看全部评分

回复 使用道具 举报
呵呵!简单的说就是将反射后得到方法,传参运行!

评分

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

查看全部评分

回复 使用道具 举报
王家虎 黑马帝 2011-10-8 22:53:17
7#
invoke本身表示引用的意思,当你得到一个类的字节码文件对象后就可以得到这个字节码文件对象的方法的类的对象,当你得到方法的类的对象之后就相当于得到了方法,这是你就可以使用Method的invoke执行这个方法了。
回复 使用道具 举报
王家虎 黑马帝 2011-10-8 22:53:34
8#
invoke本身表示引用的意思,当你得到一个类的字节码文件对象后就可以得到这个字节码文件对象的方法的类的对象,当你得到方法的类的对象之后就相当于得到了方法,这是你就可以使用Method的invoke执行这个方法了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马