小编典典

Java中的ArrayList.toArray()方法

java

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

    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);

在我看来,他们不需要此输入,因为ArrayList实例本身具有足够的详细信息以将数据转换为数组。

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


阅读 148

收藏
2020-11-16

共1个答案

小编典典

我能想到的两个原因:

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