按照JDK1.5的语法,整个数组是一个参数;而按照JDK1.4的语法,数组中的每一个元素对应一个参数;
当把一个字符串数组作为参数传递给invoke方法时,javac会按照1.4的语法进行处理(因为1.5必须兼容1.4)即把数组打散成若干个单独的参数;所以在给main(String[ ] args)传递参数时不能使用:
mainMethod.invoke(null,new String[]{"xx","yy"}),否则会出现类型不匹配异常;
解决办法:
(1)mainMethod.invoke(null,new Object[] { new String[]{"xx","yy"} }),
(2)mainMethod.invoke(null,(Object)new String[]{"xx","yy"})---针对(2)---编译器会做特殊处理,编译时不把参数当做数组看待,也就不会把数组打散成若干个参数了;
|
|