黑马程序员技术交流社区

标题: 关于将集合转换为数组的问题 [打印本页]

作者: 李东城    时间: 2013-2-13 23:00
标题: 关于将集合转换为数组的问题

  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[]{});
复制代码
不知道是什么原因啊!

作者: 坚持远方    时间: 2013-2-13 23:13
Object[] toArray()
          按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。
<T> T[] toArray(T[] a)
          按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。
这是toArray的两个方法,你看一下吧
作者: 陈科宇    时间: 2013-2-14 15:10
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;
               
        }

}
作者: 黄锦成    时间: 2013-2-14 15:11
05.String[] str = (String[])list.toArray();

list.toArray();返回的是Object[],Object[]中可能存放着多种类型的数据,转换为String[]就会出错




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