黑马程序员技术交流社区

标题: 反射的一个小问题 [打印本页]

作者: 霍振鹏    时间: 2014-4-12 20:41
标题: 反射的一个小问题
mainMethod.invoke(null, (Object) new String[] { "abc", "def", "hgi" }); 这个老师讲的时候没太听懂
就是为什么不加(Object)不行,main方法本身就收的就是一个字符串数组啊。
求 指教
作者: Tking    时间: 2014-4-12 20:50
启动Java程序的main方法的参数是一个字符串数组,即public static void main(String[] args),通过反射方式来调用这个main方法时,如何为invoke方法设置参数呢?
    按jdk 1.5的语法,由于使用的是可变参数(Object类型),设置的数组参数会被作为一个参数进行传递,而按jdk 1.4的语法,此处应设置一个Object数组,数组中的每个元素对应所调用方法的一个参数。
    当把一个字符串数组作为参数传递给invoke方式时,编译器会兼容jdk 1.4的语法,即按照1.4的语法进行处理,即把字符串数组打散成为若干个单独的参数,这样就会产生参数个数不匹配的异常。
还不明吧的话可以去看这个网址Jvm加载的过程http://smurfs.iteye.com/blog/1433142




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