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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何竹冬 中级黑马   /  2013-1-4 23:20  /  1347 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

张孝祥老师在讲反射的时候调用main函数
mainMethod.invoke(null,new Object[]{new String[]{"a","b","c"});
而main函数接收的参数类型是String[] args传入的是Object为什么编译器不会报错。

2 个回复

倒序浏览
用new Object[]{new String[]{"a","b","c"}}是为了使编译器把这个new String[]{"a","b","c"}当成一个数组传递进入,
(new String[]{"a","b","c"}就是String类型的数组啊)
不然直接传会导致new String[]{"a","b","c"}被拆成3个参数传入
回复 使用道具 举报
new Object[]{new String[]{"a","b","c"}}


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

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

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

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马