黑马程序员技术交流社区

标题: 对接收数组参数的成员方法进行反射 [打印本页]

作者: JAVADing    时间: 2015-7-1 18:16
标题: 对接收数组参数的成员方法进行反射
按照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)---编译器会做特殊处理,编译时不把参数当做数组看待,也就不会把数组打散成若干个参数了;





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2