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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© LuckyQS 中级黑马   /  2014-2-11 14:14  /  1094 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String startingClassName = args[0];
Method mainMethod = Class.forName(startingClassName).getMethod("main", String[].class);
mainMethod.invoke(null, new Object[]{new String[]{"111","222","333"}});

mainMethod.invoke(null, (Object)new String[]{"111","222","333"});
在解决类型参数不对的问题上,张老师给了两种解决方式,第一种我可以理解,第二个有点看不明白,请大神来解释一下。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

3 个回复

倒序浏览
1、mainMethod.invoke(null, new Object[]{new String[]{"111","222","333"}});
2、mainMethod.invoke(null, (Object)new String[]{"111","222","333"});
invoke方法的第二个参数明确要使用Object类型,String的父类是Object类型,强转不会有任何问题。

如果你还是有疑问,可能你就是对数组的声明和使用没有完全理解。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 赞一个!

查看全部评分

回复 使用道具 举报
因为这个方法会把数组拆开,然后在使用,所以才在外面包一层数组让他去拆。第二种是告诉他这个不是数组,不用拆。
回复 使用道具 举报
Object类是一切类的超类
new Object[]{new String[]{"111","222","333"}}//嗯  能理解  因为new 的是Object  后续不会产生类转问题

(Object)new String[]{"111","222","333"}//就把它看成为防止类转异常提前做的准备
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马