当前位置: 首页 > 面试题库 >

Java中的ArrayList.toArray()方法

邓元白
2023-03-14
问题内容

我想知道为什么他们在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实例本身具有足够的详细信息以将数据转换为数组。

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


问题答案:

我能想到的两个原因:

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


 类似资料:
  • 问题内容: 假设您有一个arraylist定义如下: 稍后在代码中,由于泛型,您可以这样说: 而且编译器完全知道它将得到一个字符串。是的仿制药!但是,这将失败: 将始终返回对象数组,而不是已定义的泛型数组。为什么该方法知道返回的内容,但默认为Objects? 问题答案: 如果你看一下执行的的ArrayList 类,它是这样的: 这种方法的问题是您需要传递相同泛型的数组。现在考虑如果此方法不带任何参

  • 问题内容: Object类中的getClass方法如何能够动态返回Class? 问题答案: 它不返回类 名 -返回代表该对象类型的类型。每个对象都“知道”它实际上是什么类型- 这取决于执行时间类型,即强制转换如何工作或失败。只是从对象中检索相关信息。 如果您的类仅包含一个,则每个对象仍将在内存中占用4个以上的字节:有效地存在一个对象“标头”,其中包含对对象的实际类型的引用,与监视器关联的信息该对象

  • 我目前正在学习方法和使用方法。有时,在决定在参数中放入什么时,我会感到困惑。我有一些代码,我在其中创建了三个方法,它们都对应。我必须为这个程序做的是显示一些服务和价格,并询问用户是否愿意。如果他们说是的话,价格会一直累积到数组结束。在我的第三种方法中,我遇到的问题是如何从main获得价格。我知道我应该使用void方法,因为我没有返回任何东西,只是将价格打印给用户。以下是我的程序代码: 具体而言,这

  • 本文向大家介绍Java中的StringBuilder类的方法。,包括了Java中的StringBuilder类的方法。的使用技巧和注意事项,需要的朋友参考一下 以下是StringBuilder类提供的各种构造函数。 SN 构造函数与说明 1 StringBuilder() 构造一个不包含任何字符且初始容量为16个字符的字符串生成器。 2 StringBuilder(CharSequence seq

  • 问题内容: 在回答前面的一些问题以及最近的工作时,我一直在想为什么Java不支持其内置类中的方法链接。 例如,如果我要创建一个类,可以通过以下方法而不是void来使其 可链接: 内置库为什么不倾向于以这种方式执行操作?方法链接有不利之处吗? 我可能忽略了一些可以解释缺少方法链接的内容,但是任何默认返回void的setter方法都应该返回 对此 的引用(至少在我看来应该如此)。这样可以使以下情况更加