黑马程序员技术交流社区

标题: 用反射执行某个类的main方法. [打印本页]

作者: 谭景宾    时间: 2012-5-10 01:06
标题: 用反射执行某个类的main方法.
本帖最后由 谭景宾 于 2012-5-10 01:29 编辑

import java.lang.reflect.*;
class ReflectTest{
       public static void main(String[] args)throws Exception{
                         Method mainMethod = Class.forName("testClass").getMethod("main",String[].class);
                         mainMethod.invoke(null,new String[]{"111","2222","3333"});  //为什么这里会报错?  另外在视频里看,好像传入3个元素的数组参数也不行,只能传入1个元素的数组,这时为什么?求解
        }
}

class testClass{
         public static void main(String[] args){   //这里接收的不正是String[]类型吗
                  for(String arg : args){
                         System.out.println(arg);
                  }
         }
}

作者: 谭景宾    时间: 2012-5-10 01:29
自己先顶下,把帖子顶上去。
作者: 张小锋    时间: 2012-5-10 08:08
有两种方法可以给字符串数组传参数:

jdk 1.5的语法,使用的是可变参数(Object类型),相当于把字符串数组打散成为若干个单独的参数,例:
mainMethod.invoke(null,  (Object)new String[]{"Hello", "Hao", "Main"});

jdk 1.4的语法,设置一个Object数组,代码:
mainMethod.invoke(null, new Object[]{new String[]{"Main","Text"}});

当把一个字符串数组作为参数传递给invoke方式时,编译器会兼容jdk 1.4的语法,

即按照1.4的语法进行处理,这样就会产生参数个数不匹配的异常。






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