本帖最后由 第一印象 于 2013-9-20 15:56 编辑
为什么会打印这个结果?
首先,你用反射调用了TestArguments1类的main函数,而且给main函数传了一个数组参数new String[] { "111","222", "333" },所以,对于打印下面的这几个值应该是没什么疑问的吧:
length3
111
222
333
这就跟正常调用main函数并传了一个数组的参数给它是一样的道理,只是最后一个值,
打印的是null,这个你把鼠标移到invoke方法上去你会发现,invoke方法返回的是一个Object类型的值,
对于没有返回值的函数,默认返回是null,而main函数是没有返回值的,所以打印了null,这么说不知道能否明白,如果不明白,看下面:- System.out.println(main.invoke(null, (Object) new String[] { "111",
- "222", "333" }));
复制代码 你不是打印了这个main.invoke方法嘛,这个方法返回了一个null,你把它打印出来了,所以控制台上看到了这个值 |