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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘占月 中级黑马   /  2012-4-15 15:01  /  1772 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

两个小问题。

String startingClassName = args[0];//1: 这句代码表示什么意思?
Method mainMethod = Class.forName(startingClassName).getMethod("main", String[].class);
mainMethod.invoke(null, new Object[]{new String[]{"111","222","333"}});
//2:还有这个Object的问题,听好几遍总听不大懂。谁能通俗点给讲讲? 还是这个只要死记住就ok了?


评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

2 个回复

倒序浏览
1、 类名由main(String[] args)方法中的第一个参数指定,所以问题一的代码意思是取得Class.forName(startingClassName)取出类名。  
2、在调用main方法时,invoke方法传入的对象可以为null,
    因为main方法是静态的,第二个参数传入一个String数组,
    在方法运行时它会将数组拆开,变成多个参数,
    所以我们需要将String数组用一个Objrct数组包装,避免这种情况发生,
    因为String数组就是一个Object,我们也可以在数组前面用Object转换类型

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
String startingClassName = args[0];接受的是运行时的参数
这句话是要传一个main方法当做参数传进去,张老师里面使用另一个类的mian方法做的参数传入进去的
Method mainMethod = Class.forName(startingClassName).getMethod("main", String[].class);
Class.forN获取地址,在指定main方法, String[].class是mian方法的参数类型。
mainMethod.invoke(null, new Object[]{new String[]{"111","222","333"}}); 因为调用的main方法是静态的,所以指定null,然后为方法设值,因为只能传入进一个数组而这里有3个,所以要转成一个Object数组对象。

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

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