List.toArray()出现ClassCastException
来源:互联网 发布:自动化交易软件 编辑:程序博客网 时间:2024/06/05 09:25
ArrayList提供了一个将List转为数组的一个非常方便的方法toArray()。
toArray()有两个重载的方法:
1.list.toArray();2.list.toArray(T[] a);
对于第一个重载方法,是将list直接转为Object[] 数组;
第二种方法是将list转化为你所需要类型的数组,当然我们用的时候会转化为与list内容相同的类型。
不明真相的同学喜欢用第一个,是这样写:
ArrayList<String> list=new ArrayList<String>(); for (int i = 0; i < 10; i++) { list.add(""+i); } String[] array= (String[]) list.toArray();}结果一运行,报错:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
原因一看就知道了,不能将Object[] 转化为String[].转化的话只能是取出每一个元素再转化,像这样:
Object[] arr = list.toArray();for (int i = 0; i < arr.length; i++) { String e = (String) arr[i]; System.out.println(e);}
所以第一个重构方法就不是那么好使了。
String[] array =new String[list.size()];
list.toArray(array);
另附,两个重构方法的源码:
public Object[] toArray(){ Object[] result = new Object[size]; System.arraycopy(elementData, 0, result, 0, size);; return result;}
public Object[] toArray(Object a[]); { if (a.length < size); a = (Object[]);java.lang.reflect.Array.newInstance( a.getClass();.getComponentType();, size);; System.arraycopy(elementData, 0, a, 0, size);; if (a.length > size); a[size] = null; return a;}
本文转自http://www.cnblogs.com/ihou/archive/2012/05/10/2494578.html
0 0
- List.toArray()出现ClassCastException
- List toArray()
- List.toArray
- List.toArray()
- ArrayList.toArray() 遇到java.lang.ClassCastException错误
- ArrayList toArray() classCastexception异常 牵扯的问题
- 正确使用List.toArray()
- java list.toarray()
- List#toArray小技巧
- List.toArray()用法详解
- List.toArray的使用
- Java List.toArray 问题
- List中toArray()的使用方法
- list.toArray和 Arrays.asList
- List中toArray()的使用方法
- List转数组toArray方法
- List转数组toArray方法
- 【Java】ArrayList 的 toArray() 方法抛出 ClassCastException 异常
- 梦里的路
- python循环删除的陷阱
- OPENCV
- wap和net区别
- JPA Multiple writable mappings exist for the field [{0}]. Only one may be defined as writable, all o
- List.toArray()出现ClassCastException
- linux 无root权限安装tmux
- Ubuntu下Hello World驱动实现全过程
- java基础知识
- javascript 动态修改Li的值
- MTS格式视频转AVI相关软件
- OpenCV:二值图像连通区域分析与标记算法实现
- 几种iOS 自动化测试框架对比
- Protobuf+Java服务端环境7步准备