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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王光保 黑马帝   /  2011-7-16 18:10  /  3077 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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 编辑 ]

评分

参与人数 1技术分 +3 收起 理由
admin + 3 好问题,这事我都没注意过!!

查看全部评分

4 个回复

倒序浏览
黑马网友  发表于 2011-7-16 22:42:12
沙发
只有父类类型的数据才可以被强制转换为其子类的类型。
回复 使用道具 举报
黑马网友  发表于 2011-7-17 12:04:55
藤椅
你看我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:47
板凳
较低类型转换为较高类型可以
较高类型的数据转换为较低类型就可能数据丢失。
回复 使用道具 举报
黑马网友  发表于 2011-7-17 12:12:56
报纸
String[] str = (String[])list.toArray();   list.toArray()返回的是Object类型的数组 ,而你要转换成String类型的数组,这是不行的。
String类型可以向Object类型过度,但是Object不能像String类型过度
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马