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对象!)
|