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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 马林康 于 2012-6-14 06:51 编辑

执行代码
  1. Method methodMain=TestDemo.class.getMethod("main", String[].class);
  2. System.out.println(methodMain.invoke(null, new Object[]{new String[]{"111","222","333","444"}}));
复制代码
  1. class TestDemo{
  2. public static void main(String[] args)
  3. {
  4. for(String str:args)
  5. {
  6. System.out.println(str);
  7. }
  8. }
  9. }
复制代码
结果后面怎么多了个null

评分

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

查看全部评分

2 个回复

倒序浏览
methodMain.invoke(null, new Object[]{new String[]{"111","222","333","444"}});这个方法调用后显示的是你上图中的
111、222、333、444
但你不小心在方法外面多加了一个输出,即:System.out.println(methodMain.invoke(null, new Object[]{new String[]{"111","222","333","444"}}));
经查文档中的Method中的方法invoke,文档中说明如下:
如果方法正常完成,则将该方法返回的值返回给调用者;如果该值为基本类型,则首先适当地将其包装在对象中。但是,如果该值的类型为一组基本类型,则数组元素不 被包装在对象中;换句话说,将返回基本类型的数组。如果底层方法返回类型为 void,则该调用返回 null。
由于你调用的是main方法,也就是void类型,最后就打印出null了。
回复 使用道具 举报
如果方法正常完成,则将该方法返回的值返回给调用者;如果该值为基本类型,则首先适当地将其包装在对象中。但是,如果该值的类型为一组基本类型,则数组元素不 被包装在对象中;换句话说,将返回基本类型的数组。如果底层方法返回类型为 void,则该调用返回 null。

API文档查到的!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马