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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhouxp3323 黑马帝   /  2012-4-12 11:20  /  1331 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Person4 {
public static void main(String[] args) throws Exception{
  String s = "abcde";
  char ch = s.charAt(2);
  System.out.println(ch);
  
  String className = args[0];
  Method mainMethod = Class.forName(className).getMethod("main", String[].class);
  mainMethod.invoke(null, new String[]{"abc","bcd","efg"});          //这行运行为什么会出错??
     }
}

}
class Starting{
public static void main(String[] args){
  for(String arg:args){
   System.out.println(arg);
  }
}
}

我注释的那行代码,为什么运行的时候会出错啊,我用mainMethod激活这个类的main方法,传递了一个String类型的数组对象,运行的时候怎么会报错呢,编译的时候还没有什么问题,说传递的参数不对?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

2 个回复

倒序浏览
new String[]{"abc","bcd","efg"})
默认为传了 三个 进来
要打包成一个  进来 就没问题了 (Object )new String[]{"abc","bcd","efg"})

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
张老师视频中  特意提到过  
main方法 参数是需要一个String数组,
jdk中接收到之后将数组拆开之后再分别作为参数传递给main
既然它拆包我们就再包一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马