String[] s1 = list.toArray(new String[0]);
1.该方法用了泛型,并且是用在方法的创建中(<T> 相当于定义泛型,T[]是在使用泛型T)
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法
2.该方法返回集合中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同
3. 与toArray()相比,toArray是返回一个Object[] 然后进行copy
toArray(new String[0])则是根据参数数组的类型,构造了一个对应类型的,长度跟ArrayList的size一致的空数组
当parameter.length <= list时,list.toArray(parameter)创建一个类型和parameter一致,长度与list一致的数组,并为其引用赋值给数组
当parameter.length > list时,list.toArray(parameter)创建一个类型和parameter一致,长度为parameter.length的数组,并为其引用赋值给数组,超出list长度部分补null
因此将集合转换为数组时,参数指定空数组,节省空间,可写为:String[] s1 = list.toArray(new String[0]);