黑马程序员技术交流社区

标题: 关于数组的基类/派生类的转型 [打印本页]

作者: 江苏孙浩    时间: 2012-10-21 09:35
标题: 关于数组的基类/派生类的转型
关于数组的转型:
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;”没有问题
两者都是基类(基基类)、派生类的关系,那么为什么会出现这种状况?
作者: 邹海洋    时间: 2012-10-21 09:44
刚开始看包的视频。 我觉得问题出在包与包之间的访问问题上 具体细节我无法解答你 呵呵
作者: 王自强    时间: 2012-10-21 09:53

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 10:39
王自强 发表于 2012-10-21 09:53
Object[] oa = new Integer[] { new Integer(1), new Integer(2), new Integer(3) };//把子类对象中的Obje ...

没听懂什么意思。。




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