方法中:
{
 ArrayList list=new ArrayList()
   ............
 return(String[])list.toArray(new String[0]);
}参数 (new String[0])是干什么用的,怎理解String[0]

解决方案 »

  1.   

     return(String[])list.toArray(new String[0]); 肯定方法定义的返回类型是 String[]
    list.toArray(new String[0]);  就是在做类型转换
    还有不明白的地方吗?
      

  2.   

    new String[0]  这是什么含义呢,[0]表示什么?
      

  3.   

    只是 一个类型标示,用来告诉toArray方法具体转化成什么类型。
    list.toArray(new String[0]);//转化成String数组list.toArray(new int[0]);//转化成int数组
      

  4.   

    <T> T[] toArray(T[] a);
    泛型
    会返回你一个list长度的String 类型的数组
      

  5.   

    <T> T[] toArray(T[] a)需要一个T[] a,new String[0]相当于开辟了一个长度为0的String[],并且指定了泛型。这样函数的调用是将list转换了一个String的数组。
      

  6.   

    new String[0] 就是new出一个数组 [0] 是长度标示
      

  7.   

    String[0]确实不好理解,
    我觉得这是sun设计的一个缺陷,
    在这里return(String[])list.toArray(new String[0]);
    return(String[])list.toArray(new String[100]);
    return(String[])list.toArray(new String[500]);我记得好像没什么区别吧,
    当然我也可能理解错了
      

  8.   

    new String[0]       申请了0个对象?
    new String[100]     申请了100个对象?
      

  9.   

    new String[0]  -------长度为0
    new String[100] ------长度为100,可以存100个String对象
    这里的用new String[0]只是为了指定函数的形参数,最终返回的String[]的长度是由你的list存储内容的长度决定了。
      

  10.   

    toArray
    <T> T[] toArray(T[] a)返回以正确顺序包含列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。遵守 Collection.toArray(Object[]) 方法的常规协定。 指定者:
    接口 Collection<E> 中的 toArray
    参数:
    a - 要存储列表中元素的数组,如果它足够大的话;否则为此目的分配一个运行时类型相同的新数组。 
    返回:
    包含列表中元素的数组。 
    抛出: 
    ArrayStoreException - 如果指定数组的运行时类型不是此列表中每个元素的运行时类型的超类型。 
    NullPointerException - 如果指定数组为 null//我觉得doc写的很清楚了
      

  11.   

    有区别的。
    比如list元素个数1,字符串数组初始化个数3,那么访问访问第2个元素返回null,
    比如list元素个数3,字符串数组初始化个数1,那么访问访问第2个元素报错。
    看toArray方法的定义。
      

  12.   


    不对吧,最终返回的String[]的长度是由string[]的length和list的size共同决定,如果length大于size则取length,如果length小于size就取size。有点绕...源码很清楚
      

  13.   

    return list.toArray(new String[0]);//这种方式效率最高
    return list.toArray(new String[100]);//浪费了100个地址空间,以及申请空间的时间
    return list.toArray(new String[500]);//浪费了500个地址空间,以及申请空间的时间
    new String[0]就是起一个模板的作用
      

  14.   

    悟出来了:
    ArrayList.toArray()需要返回String [] “串对象数组” 类型,
    要求调用参数也必须是 “串对象数组”,
    new String[] 就是生生一个“串对象数组”,[0]表示元素个数为零。
    谢谢了。
      

  15.   


    不对吧,那list.toArray(new String[0]);字符串数组声明为0,就要一直报错了
      

  16.   

    List能听你命令转成某种固定类型的数组,但是你不告诉他转成什么类型,它就很傻比不知道怎么转,所以你得创造个样例出来告诉它,你给我转成这种类型,它就知道了。new String[0]就是你创造的样例,这个0无所谓,放0只是表示new出来的样例是空数组少占点空间。至于String[]  aa = list.toArray(new String[0]); 会报错,是因为list虽然知道我要转出来的是String数组,但是编译器不知道list.toArray()返回的是什么数组啊,所以你得强转下.....
      

  17.   


    哦,如果是0,不报错,只是个数元素个数是list的个数。