class TestArgument中的内容如下:
class TestArgument
{
public static void main(String[] args) {
for(String str:args)
{
System.out.println(str);
}
}
}
主函数调用如下:
public class ReflectTest2 {
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, SecurityException, NoSuchMethodException, InvocationTargetException, ClassNotFoundException {
String startClassName=args[0];
Method mainMethod=Class.forName(startClassName).getDeclaredMethod("main",String[].class);
mainMethod.invoke(null,(Object)new String[]{"111","222","333"});//这里显示参数的个数不对,main方法只接受一个字符串数组参数
//我们准备一个String[]给他按照道理说应该没什么问题,但是JDK1.5为了照顾JDK1.4,当给他一个字符串数组,人家要讲数组打开,打开的东西每一个都作为一个参数。
//那么我再在外面打一个包。
//mainMethod.invoke(null,new Object[]{new String[]{"111","222","333"}});
}
本文详细探讨了Java反射机制如何处理参数传递,特别是对于数组参数的特殊处理方式,以及如何避免常见的参数数量错误。通过实例分析,展示了在不同版本的Java中参数传递的差异,并提供了解决方案。
5596

被折叠的 条评论
为什么被折叠?



