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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

mainMethod.invoke(null, new String[]{ "111","222","333"}) ;
这句代码会报“java.lang.IllegalArgumentException”异常,解决办法如下:
方法一:
mainMethod.invoke(null,new Object[]{new String[]{"xxx"}});
方法二:
mainMethod.invoke(null,(Object)new String[]{"xxx"});
原因分析:
通过反射方式来调用带有数组参数的方法时,如何为invoke方法传递参数呢?按jdk1.5的语法,整个数组是一个参数,而按jdk1.4的语法,数组中的每个元素对应一个参数,当把一个字符串数组作为参数传递给invoke方法时,javac会到底按照哪种语法进行处理呢?jdk1.5肯定要兼容jdk1.4的语法,会按jdk1.4的语法进行处理,即把数组打散成若干个单独的参数。所以,在给main方法传递参数时,不能使用代码mainMethod.invoke(null,new String[]{“xxx”}),javac只把它当作jdk1.4的语法进行理解,而不把它当作jdk1.5的语法解释,因此会出现参数类型不对的问题

1 个回复

正序浏览
风华正茂 来自手机 中级黑马 2015-8-20 12:21:42
沙发
感谢楼主分享,楼主辛苦了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马