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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谭景宾 中级黑马   /  2012-5-10 01:06  /  1820 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 谭景宾 于 2012-5-10 01:29 编辑

import java.lang.reflect.*;
class ReflectTest{
       public static void main(String[] args)throws Exception{
                         Method mainMethod = Class.forName("testClass").getMethod("main",String[].class);
                         mainMethod.invoke(null,new String[]{"111","2222","3333"});  //为什么这里会报错?  另外在视频里看,好像传入3个元素的数组参数也不行,只能传入1个元素的数组,这时为什么?求解
        }
}

class testClass{
         public static void main(String[] args){   //这里接收的不正是String[]类型吗
                  for(String arg : args){
                         System.out.println(arg);
                  }
         }
}

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
自己先顶下,把帖子顶上去。
回复 使用道具 举报
有两种方法可以给字符串数组传参数:

jdk 1.5的语法,使用的是可变参数(Object类型),相当于把字符串数组打散成为若干个单独的参数,例:
mainMethod.invoke(null,  (Object)new String[]{"Hello", "Hao", "Main"});

jdk 1.4的语法,设置一个Object数组,代码:
mainMethod.invoke(null, new Object[]{new String[]{"Main","Text"}});

当把一个字符串数组作为参数传递给invoke方式时,编译器会兼容jdk 1.4的语法,

即按照1.4的语法进行处理,这样就会产生参数个数不匹配的异常。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马