为什么需要分配一个可以保存集合值的数组并将其传递给toArray(T [])
该集合的方法?我知道有一种toArray()
方法不需要预先分配的数组,但是这种方法返回的 Object[] 绝对不好。我也想避免类型转换。
例子:
Set<String> strings = new HashSet<>();
// put some values in it
String[] stringArr = strings.toArray(/* preallocated array, why? */);
假设我使用泛型(无论如何其他一切都是不好的做法),使用的集合类本身应该有足够的信息来为我完成这项工作。它可以做这样的事情:
public someCollection<T> {
...
public T[] toArray() {
T[] arr = new T[this.length];
// fill the array with the collection values
return arr;
}
}
问题在哪里,如果我没有弄错,这应该很容易在默认集合类中实现。