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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 忘记了 中级黑马   /  2013-12-24 00:02  /  1478 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 忘记了 于 2013-12-24 21:04 编辑

  1. public class IteratorDemo {
  2.         public static void main(String[] args) {
  3.                 Collection c=new ArrayList();
  4.                 c.add("哈哈");
  5.                 c.add("嘎嘎");
  6.                 c.add("拉拉");
  7.                 //方式一
  8.                 String[] ss=(String[])(c.toArray());        //类型转换异常,为什么运行时会异常?
  9.                 for(int i=0;i<ss.length;i++){
  10.                         String s=ss[i];
  11.                         System.out.println(s);
  12.                 }
  13.         }
  14. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
String[] ss=(String[])(c.toArray());  这句代码的目的是把集合变数组吧,集合变数组用的是collection接口中的toArray()方法,改为String[] ss=c.toArray(new String[c.size()]); 就可以了,   
回复 使用道具 举报
public class IteratorDemo {
        public static void main(String[] args) {
                Collection c=new ArrayList();
                c.add("哈哈");
                c.add("嘎嘎");
                c.add("拉拉");
                c.add(1);//1经过自动装箱变为Integer对象了!
                String[] ss=(String[]) c.toArray(new String[c.size()]);
                for(int i=0;i<ss.length;i++){
                        String s=ss;
                        System.out.println(s);
                }
        }
}
楼主通过c.toArray()方法将集合转成了一个Object[],那么虚拟机就知道Object[]这是一个"混合兵团",
里边有步兵,有装甲兵,还有侦查兵,然后楼主想通过强转操作将这支混合兵团转成"步兵兵团",那些
装甲兵和侦查兵他们可干不了步兵,所以强转失败了!
    虽然楼主心里清楚这支部队虽然名番号上是"混合兵团"但里边只有步兵,但是虚拟机不知道啊,所以
他不让你强转!但是虚拟机考虑到上边这种特殊情况,所以给了另外一中方法达到Object[]转为String[]
的目的,那就是楼上说的方法了!但是这种方法的使用必须满足"混合兵团"里边只有步兵这种情况,如果
还有其他兵种,运行时会报 java.lang.ArrayStoreException异常!(比如集合中有Integer对象!)

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 很给力!

查看全部评分

回复 使用道具 举报
迪兰奇迹 发表于 2013-12-24 14:06
public class IteratorDemo {
        public static void main(String[] args) {
                Collect ...

强悍,我居然看懂了~
回复 使用道具 举报
{:soso_e113:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马