黑马程序员技术交流社区

标题: 关于反射调用main方法 [打印本页]

作者: 何竹冬    时间: 2013-1-4 23:20
标题: 关于反射调用main方法
张孝祥老师在讲反射的时候调用main函数
mainMethod.invoke(null,new Object[]{new String[]{"a","b","c"});
而main函数接收的参数类型是String[] args传入的是Object为什么编译器不会报错。

作者: 冉世友    时间: 2013-1-4 23:35
用new Object[]{new String[]{"a","b","c"}}是为了使编译器把这个new String[]{"a","b","c"}当成一个数组传递进入,
(new String[]{"a","b","c"}就是String类型的数组啊)
不然直接传会导致new String[]{"a","b","c"}被拆成3个参数传入
作者: 嘿嘿小学徒    时间: 2013-1-5 00:32
new Object[]{new String[]{"a","b","c"}}


java中Object 是基类,任何对象都是它的子类,字符串数组自然也是!

你这儿考虑的不应该是main函数接收的参数,而是invoke函数接收的参数(String methodName,Object ...) 后面可以传入多个Object也可以传入一个,如果此时你传入一个字符串数组,虚拟机会把它转化成多个Object,自然不能被main方法接受!

当然也可以写成(Object)new String[]{"a","b","c"}






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