Java中的ArrayList.toArray()方法

jav*_*use 10 java arrays

我想知道为什么他们设计toArray方法ArrayList在Java中输入数组?

    ArrayList<String> listArray = new ArrayList<String>();

    listArray.add("Germany");
    listArray.add("Holland");
    listArray.add("Sweden");

    String []strArray = new String[3];
    String[] a = (String [])listArray.toArray(strArray);
Run Code Online (Sandbox Code Playgroud)

对我来说,他们似乎不需要这个输入,因为ArrayList本身的实例有足够的细节来将数据转换为数组.

我的问题是为什么他们仍然需要传入数组?谢谢.

And*_*yle 14

我能想到的两个原因:

  1. 擦除意味着通用参数在运行时不可用,因此ArrayList<String>知道它包含字符串,它只是原始类型ArrayList.因此,所有调用toArray()都必须返回一个Object[],这不是严格正确的.你必须实际创建第二个数组String[]然后迭代第一个数组,依次转换所有参数以得到所需的结果类型.
  2. 定义方法的方式意味着您可以传入对现有数组的引用,并通过该方法填充该数组.在某些情况下,这可能非常方便,而不是返回一个新数组,然后将其值复制到别处.

  • 它们是相同的,_if_`collection.size()<= strArray.size()`,在你的特定情况下是正确的.无论如何,通常最好使用"a". (4认同)