Java ジェネリック以前Collection.toArray()は、開発者が期待する配列の型を知る方法がありませんでした (特に空のコレクションの場合)。私が理解しているように、これがイディオムの背後にある主な理論的根拠でしたcollection.toArray(new E[0])。
ジェネリックを使用するとCollection<E>.toArray()、インスタンスEおよび/またはその特殊化でいっぱいの配列のみを返すことができます。Object[]戻り値の型がまだ asではなくas であるのはなぜだろうかE[]。E[]私の意見では、代わりにを返すことは、Object[]既存のコードを壊すべきではありません。
参照:Collection.toArray()およびCollection.toArray(T[])関連トピックjava: (String[])List.toArray() は ClassCastException を与える