黑马程序员技术交流社区
标题:
关于反射的invoke()方法
[打印本页]
作者:
翟友伟
时间:
2012-3-29 16:45
标题:
关于反射的invoke()方法
看视频 有这个 代码。。在加在反射里头的
例如
.getMethod("add",1) .invoke(参数1,参数2)
张孝详 基础加强视频中 没有对invoke方法功能说明下。。
哪个帮忙说下 invoke()的含义
作者:
dangfei
时间:
2012-3-29 16:58
invoke(Object obj, Object... args)
对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。
第一个参数是要调用方法的对象,args是参数列表。为什么不下载一个java api网上有很多资源。
作者:
翟友伟
时间:
2012-3-29 17:06
调用由此 Method 对象表示的底层方法。。。
关键是 帮助文档
看了 后 还是不懂。、。。
此 Method 对象底层方法。。----------------还是不懂啊
能不能 说的通俗点
作者:
翟友伟
时间:
2012-3-29 17:06
dangfei 发表于 2012-3-29 16:58
invoke(Object obj, Object... args)
对带有指定参数的指定对象调用由此 Method 对象表示的底层 ...
调用由此 Method 对象表示的底层方法。。。
关键是 帮助文档
看了 后 还是不懂。、。。
此 Method 对象底层方法。。----------------还是不懂啊
能不能 说的通俗点
作者:
dangfei
时间:
2012-3-29 17:21
这么说吧,假设对象 A 有一个 b(String s ,int a)方法,
现在我们已经通过反射得到了这个方法 Method mt,即 mt 是b的方法反射,现在我们有通过
mt调用 A 的 b方法: mt.(A,"zhang",30)
首先指定 A ,说明我们在 对象 A 上调用方法,“zhang"和30 则是所需参数。不知这样说lz明白不....
作者:
和心愿
时间:
2012-3-29 19:49
本帖最后由 和心愿 于 2012-3-29 19:51 编辑
第一步:Method getMethod(String name, Class<?>... parameterTypes) (得到的是public方法)
这里String name指的是要得到的那个方法的方法名,Class<?>... parameterTypes是以可变参数的形式来写的,这个参数类型是Class,也就是说如果方法是无参数的就只需要方法名了,有一个的话就传它的Class,两个以及以上的话用逗号隔开,(当然是可以用一个Class[]的);
第二步:
Object invoke(Object obj, Object... args) 通过第一步得到的Method对象来调用该方法,第一个参数Object obj指的是实际调用方法的对象,Object... args指i的是该方法的参数(也是可变参数形式的就不多说了);
值得注意的是invoke方法返回值是Object类型的,如果需要得到第一步里以name为方法名的方法的返回值类型可以强转
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2