黑马程序员技术交流社区

标题: 反射中invoke方法到底有什么作用?应该怎么使用? [打印本页]

作者: 奋斗2014    时间: 2014-6-23 01:31
标题: 反射中invoke方法到底有什么作用?应该怎么使用?
今天在学反射里面的Method,发现难度还是挺大的。然后里面有些东西,还是不太明白。
                Method MethodClass=CLASSNAME.getClass().getMethod("main",String[].class);
                MethodClass.invoke(null, (Object)new String[]{"8","5","3"});
有没有谁能通俗的和我讲一下invoke的作用?和invoke(参数1,参数2)中参数1和参数2分别代表的是什么?
作者: _qishiwobusha_    时间: 2014-6-23 01:36
参数1表示你要调用哪一个对象的方法,因为main 是静态方法,不要对象也可以运行。
参数2表示 反射到的方法那些参数,如main(String []agrs) 有一个String[] 数组的参数。
作者: 奋斗2014    时间: 2014-6-23 02:05
_qishiwobusha_ 发表于 2014-6-23 01:36
参数1表示你要调用哪一个对象的方法,因为main 是静态方法,不要对象也可以运行。
参数2表示 反射到的方法 ...

谢谢啦!!!!1
作者: 张益达    时间: 2014-6-23 08:36
本帖最后由 张益达 于 2014-6-23 08:47 编辑

getMethod("main",String[].class);  JAVA中不是有重载吗  所以只通过方法名没有办法准确的定位方法具体是那个,所以就必须要根据参数来定位找到那个唯一的方法     invoke是调用  调用过的时候 如果是静态的方法 静态的东西属于类所以 不需要  对象  如果需要 吧invoke的第一个参数改成对象就可以了   后面是传入的参数  比方说 如果你想在执行一个类的时候 加载另一个类   还记得数据库的加载吗  就用到了反射 Class.forName("jdbc")
作者: 奋斗2014    时间: 2014-6-23 11:29
张益达 发表于 2014-6-23 08:36
getMethod("main",String[].class);  JAVA中不是有重载吗  所以只通过方法名没有办法准确的定位方法具体是 ...

谢谢哦!




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