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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李东城 中级黑马   /  2013-2-13 23:00  /  1209 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. ArrayList<String> list = new ArrayList<String>();
  2. list.add("fff");
  3. list.add("fffff");
  4. String[] str = (String[])list.toArray();
  5. 但是此时却产生了类转换异常,不知道是为什么。调试了很长时间都不知道什么原因。
  6. 后来用了这种方法却没有异常:
  7. String str[] = list.toArray(new String[]{});
复制代码
不知道是什么原因啊!

3 个回复

倒序浏览
Object[] toArray()
          按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。
<T> T[] toArray(T[] a)
          按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。
这是toArray的两个方法,你看一下吧
回复 使用道具 举报
public class ConvertToArray {


        public static void main(String[] args) {
                // TODO Auto-generated method stub
                ArrayList<String> list = new ArrayList<String>();
                list.add("fff");
                list.add("fffff");
                String[] str = (String[])list.toArray();
                //list.toArray()返回的是Object[]数组。而Object[]类型是不能转化成String[]类型的。
//                但是此时却产生了类转换异常,不知道是为什么。调试了很长时间都不知道什么原因。
//                后来用了这种方法却没有异常:
                String[] str2= list.toArray(new String[]{});
                //list.toArray(T[] t);通配符T表示可以根据需要传入类型。例如我们需要
                //转化成String[],就传入String[].
                //看到下面的小例子就知道了。
                //这样转换不行。
                Object[] obj1=new Object[]{"keyee","rory"};
                String[] str1=obj1;
                //下列的转换才是可以的。
                String[] str3=new String[]{"keyee","rory"};
                Object[] obj2=str2;
               
        }

}
回复 使用道具 举报
05.String[] str = (String[])list.toArray();

list.toArray();返回的是Object[],Object[]中可能存放着多种类型的数据,转换为String[]就会出错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马