黑马程序员技术交流社区

标题: 【急】关于反射的调用main方法 [打印本页]

作者: 梁胜海    时间: 2012-12-11 16:18
标题: 【急】关于反射的调用main方法
运行环境:jdk1.7
原因:我无论怎么试,打印的语句最后总是有一句null。求解决,我看了半天我代吗没错。、
求解决:

要调用此类的Main方法:
class MainTest {
public static void main(String[] args) {
  for (String arg:args){
   System.out.println(arg);
  }
}
}
测试类:
public class MothodMain {
public static void main(String[] args)throws Exception {
  MainTest.main(new String[]{"111","222","333"});
  
  //这里传入我要调用某类的main方法的类名
  String startName=args[0];
  Method method=Class.forName(startName).getMethod("main", String[].class);
  String[] str={"haha","hoho","momo"};
  System.out.println(method.invoke(null, new Object[]{str}));
}
}

作者: 梁胜海    时间: 2012-12-11 16:20
这是我打印的结果。上图

未命名.jpg (2.66 KB, 下载次数: 10)

未命名.jpg

作者: 张学永    时间: 2012-12-11 17:14
你的代码没有错,关键是method.invoke(null, new Object[]{str})是有返回值的,而你调用主函数的时候,由于返回值是void,所以这句返回了一个null,
你又把它打印了一遍,所以出现了一个null,如果你直接调用,不再次打印,就不会出现null了。
作者: 梁胜海    时间: 2012-12-11 17:24
张学永 发表于 2012-12-11 17:14
你的代码没有错,关键是method.invoke(null, new Object[]{str})是有返回值的,而你调用主函数的时候,由于 ...

小细节,我擦,没看到、谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2