我遇到了一些新的东西,我真的很难理解。这就是我所做的,它完美无缺......
Vector<String[]> v = new Vector<String[]>();
v.add(s);
String[][] s1 = new String[v.size][]
v.toArray(s1);
我的问题是它是如何工作的,即使方法 toArray()只将1-D数组作为参数..? 我对java编程不太老,所以寻求解释..
提前致谢..
答案 0 :(得分:5)
在Java中只有 真正的一维数组 - 其中看起来就像你有一个多维数组一样,它实际上只是一个数组数组。
因此,如果我们忽略String []本身是一个数组的事实,并在任何地方用StringArray
替换它,我们得到这个代码:
Vector<StringArray> v = new Vector<StringArray>();
v.add(s);
StringArray[] s1 = new StringArray[v.size()];
v.toArray(s1);
现在看起来不那么奇怪吧? s1
是一个字符串数组数组,v
是字符串数组的向量。 v.toArray()
将一个字符串数组作为参数,因此我们可以使用s1
作为参数。
答案 1 :(得分:1)
很简单:v
是一维数组的向量,toArray
返回向量中任何元素的一维数组(在本例中为1-D数组)。结果是1-D阵列的1-D阵列,通常称为2-D阵列。
答案 2 :(得分:1)
toArray()接受一维对象数组。
字符串数组是一个对象。
s1是一个字符串数组数组。
QED
答案 3 :(得分:0)
该论点将“String [] []”视为“String []”对象的“1维数组”。
在这种情况下,Vector.toArray(T [] a)采用T的数组。让我们用“String []”类型替换泛型T(注意String []是一个对象)。所以这意味着Vector.toArray(String [] [] a)将String [] []作为参数。