我想知道为什么他们在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实例本身具有足够的详细信息以将数据转换为数组。
我的问题是为什么他们仍然需要传递数组?谢谢。
我能想到的两个原因:
ArrayList<String>
不 知道 它包含字符串,而只是原始类型ArrayList
。因此,所有对的调用toArray()
都必须返回Object[]
,这并不是严格正确的。您实际上必须创建第二个数组,String[]
然后在第一个数组上进行迭代,依次转换其所有参数以得出所需的结果类型。问题内容: 假设您有一个arraylist定义如下: 稍后在代码中,由于泛型,您可以这样说: 而且编译器完全知道它将得到一个字符串。是的仿制药!但是,这将失败: 将始终返回对象数组,而不是已定义的泛型数组。为什么该方法知道返回的内容,但默认为Objects? 问题答案: 如果你看一下执行的的ArrayList 类,它是这样的: 这种方法的问题是您需要传递相同泛型的数组。现在考虑如果此方法不带任何参
问题内容: Object类中的getClass方法如何能够动态返回Class? 问题答案: 它不返回类 名 -返回代表该对象类型的类型。每个对象都“知道”它实际上是什么类型- 这取决于执行时间类型,即强制转换如何工作或失败。只是从对象中检索相关信息。 如果您的类仅包含一个,则每个对象仍将在内存中占用4个以上的字节:有效地存在一个对象“标头”,其中包含对对象的实际类型的引用,与监视器关联的信息该对象
CorsoStudi.java
我目前正在学习方法和使用方法。有时,在决定在参数中放入什么时,我会感到困惑。我有一些代码,我在其中创建了三个方法,它们都对应。我必须为这个程序做的是显示一些服务和价格,并询问用户是否愿意。如果他们说是的话,价格会一直累积到数组结束。在我的第三种方法中,我遇到的问题是如何从main获得价格。我知道我应该使用void方法,因为我没有返回任何东西,只是将价格打印给用户。以下是我的程序代码: 具体而言,这
本文向大家介绍Java中的StringBuilder类的方法。,包括了Java中的StringBuilder类的方法。的使用技巧和注意事项,需要的朋友参考一下 以下是StringBuilder类提供的各种构造函数。 SN 构造函数与说明 1 StringBuilder() 构造一个不包含任何字符且初始容量为16个字符的字符串生成器。 2 StringBuilder(CharSequence seq
问题内容: 在回答前面的一些问题以及最近的工作时,我一直在想为什么Java不支持其内置类中的方法链接。 例如,如果我要创建一个类,可以通过以下方法而不是void来使其 可链接: 内置库为什么不倾向于以这种方式执行操作?方法链接有不利之处吗? 我可能忽略了一些可以解释缺少方法链接的内容,但是任何默认返回void的setter方法都应该返回 对此 的引用(至少在我看来应该如此)。这样可以使以下情况更加