黑马程序员技术交流社区
标题:
用反射执行某个类的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