A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

按照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)---编译器会做特殊处理,编译时不把参数当做数组看待,也就不会把数组打散成若干个参数了;

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马