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;
}
}
キャッチはどこにありますか。間違っていなければ、デフォルトのコレクション クラスに簡単に実装できるはずです。