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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Sponge 黑马帝   /  2011-12-16 22:04  /  2049 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Sponge 于 2011-12-16 22:04 编辑

有一个类如下:
class StrDemo
{
        public void  testArrayPara(String[] args)
        {
                for(String arg : args)
                {
                        System.out.println(arg);
                }
        }
}

普通可变参数方法的调用如下:
StrDemo demo = new StrDemo();
demo.testArrayPara(new String[]{"nihao","ds"});

可是大家记得张老师讲的反射调用main函数吗?
有一句 mainMethod.invoke(null, (Object)new String[]{"111","222","333"});不懂为什么一定要加(Object)转换
同样都是调用这么一个方法,为什么不能跟上面一样不用Object转换?









评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

3 个回复

倒序浏览
当我们调用一个类的main方法时,invoke方法传入的对象可以为null,因为main方法是静态的,第二个参数传入一个String数组,但是因为jdk1.5兼容1.4,在方法运行时它会将数组拆开,变成多个参数,所以我们需要将String数组用一个Objrct数组包装,避免这种情况发生,因为String数组就是一个Object,我们也可以在数组前面用Object转换类型

点评

呵呵,我也复习了!  发表于 2011-12-17 12:23

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
admin + 1
Sponge + 2 赞一个!

查看全部评分

回复 使用道具 举报
Sponge 黑马帝 2011-12-17 11:13:44
藤椅
马伟奇 发表于 2011-12-16 22:28
当我们调用一个类的main方法时,invoke方法传入的对象可以为null,因为main方法是静态的,第二个参数传入一个S ...

哦,明白了,谢谢哈
回复 使用道具 举报
Object表示一个对象,对象里可以存放任何类型的数据:String int 数组,list   其他对象等等,不过要想使用都要想使用Object里的数据几乎都要先判断是不是null后在转换成想要的数据
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马