黑马程序员技术交流社区

标题: 数组怎么不能强转型呢? [打印本页]

作者: 刘晓康    时间: 2012-4-4 16:34
标题: 数组怎么不能强转型呢?
List<Person> list = new ArrayList<Person>();
Person[]  pro = (Person[])list.toArray();
toArray()返回的是Object数组,把他强转为Person数组为什么不可以呀
执行这句会出现类型转换异常。
为什么数组不能强转呢?
作者: 翟友伟    时间: 2012-4-4 16:48
你真强     没必要为了 积分    一天发那么多话题吧。。。。太明显了 。。   
作者: 张志阳    时间: 2012-4-4 16:57
哈哈,可以理解。还是慢慢来吧
作者: 刘士    时间: 2012-4-4 17:49
Java中允许向上和向下转型,但是这个转型是否成功是根据Java虚拟机中这个对象的类型来实现的。Java虚拟机中保存了每个对象的类型。而数组也是一个对象。
如:
Object objs[]=new Object[10];
String strs[]=(String[])objs;
抛出异常:Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;
修改一下:
  String strs[]=new String[10];
  Object objs[]=strs;
正常通过编译。




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