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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 江苏孙浩 中级黑马   /  2012-10-21 09:35  /  1508 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于数组的转型:
Class SHA{ public void print(){ ...} }
Class SHB extends SHA { public void print() { ...} }

对于代码:
                Object[] oa = new Object[] { new Integer(1), new Integer(2), new Integer(3) };
                System.out.println(oa[0].getClass());
                Integer[] ia = (Integer[]) oa;
                int i;
                for (i = 0; i < ia.length; i++)
                        System.out.println(ia[i]);
               
               
                SHA[] sha = new SHB[]{new SHB(), new SHB()};
                SHB[] shb = (SHB[])sha;
                for (i = 0; i < shb.length; i++)
                        System.out.println(shb[i]);

第一段在“Integer[] ia = (Integer[]) oa;” 出错:[Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
但是第二段代码 “SHB[] shb = (SHB[])sha;”没有问题
两者都是基类(基基类)、派生类的关系,那么为什么会出现这种状况?

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

3 个回复

倒序浏览
刚开始看包的视频。 我觉得问题出在包与包之间的访问问题上 具体细节我无法解答你 呵呵
回复 使用道具 举报

Object[] oa = new Integer[] { new Integer(1), new Integer(2), new Integer(3) };//把子类对象中的Object变成Integer可以通过
        System.out.println(oa[0].getClass());
        Integer[] ia = (Integer[]) oa;
        int i;
        for (i = 0; i < ia.length; i++)
                System.out.println(ia[i]);
回复 使用道具 举报
王自强 发表于 2012-10-21 09:53
Object[] oa = new Integer[] { new Integer(1), new Integer(2), new Integer(3) };//把子类对象中的Obje ...

没听懂什么意思。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马