从javadocs:
与toArray()方法一样,此方法充当基于数组的API和基于集合的API之间的桥梁。此外,此方法允许对输出数组的运行时类型进行精确控制,并且在某些情况下可以用于节省分配成本。
这意味着程序员可以控制它应该是哪种类型的数组。
例如,对于您的
ArrayList<Integer>而不是
Integer[]数组,您可能想要一个
Number[]或
Object[]数组。
此外,该方法还会检查传入的数组。如果传入的数组具有足够的空间容纳所有元素,则该
toArray方法将重用该数组。这表示:
Integer[] myArray = new Integer[myList.size()];myList.toArray(myArray);
要么
Integer[] myArray = myList.toArray(new Integer[myList.size()]);
与…具有相同的效果
Integer[] myArray = myList.toArray(new Integer[0]);
注意,在较旧的Java版本中,后一个操作使用反射来检查数组类型,然后动态构造正确类型的数组。首先,通过传递大小正确的数组,不必在
toArray方法内部使用反射来分配新的数组。情况不再如此,并且两个版本可以互换使用。


![Java列表 T [] toArray(T [] a)实现 Java列表 T [] toArray(T [] a)实现](http://www.mshxw.com/aiimages/31/496621.png)
