黑马程序员技术交流社区
标题:
关于将集合转换为数组的问题
[打印本页]
作者:
王光保
时间:
2011-7-16 18:10
标题:
关于将集合转换为数组的问题
ArrayList<String> list = new ArrayList<String>();
list.add("fff");
list.add("fffff");
String[] str = (String[])list.toArray();
但是此时却产生了类转换异常,不知道是为什么。调试了很长时间都不知道什么原因。
后来用了这种方法却没有异常:
String str[] = list.toArray(new String[]{});
不知道是什么原因啊!
[
本帖最后由 wangguangbao 于 2011-07-16 20:05 编辑
]
作者:
匿名
时间:
2011-7-16 22:42
只有父类类型的数据才可以被强制转换为其子类的类型。
作者:
匿名
时间:
2011-7-17 12:04
你看我Eclipse运行了下你的代码[code]public class TestListToArray {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("fff");
list.add("fffff");
System.out.println(list.toArray().getClass().getName());
}
}[/code]结果是[Ljava.lang.Object;
说明你这个toArray是一个Object数组你再强制转换成String就有问题了
作者:
匿名
时间:
2011-7-17 12:08
较低类型转换为较高类型可以
较高类型的数据转换为较低类型就可能数据丢失。
作者:
匿名
时间:
2011-7-17 12:12
String[] str = (String[])list.toArray(); list.toArray()返回的是Object类型的数组 ,而你要转换成String类型的数组,这是不行的。
String类型可以向Object类型过度,但是Object不能像String类型过度
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2