Vector.toArray()

いろいろあって、このメソッド自体余り信用していなかった(Java使い始めて5年とかになるのに、使った回数は数回のみ)のですが、物は試しと再度使ってみることにしました。

Vector aVector = new Vector();
aVector.add("a");
String[] strings = aVector.toArray();

……ま、実行時例外(ClassCastException)になりますわな。Object\[\]とString\[\]は直接キャストできる関係にないので。中身は確かにStringかもしれませんが、直接はそれが見えません。
でも、なぜかこれは実行時例外になりません。

Vector aVector = new Vector();
aVector.add("a");
String[] strings = aVector.toArray(new String[0]);

……ええと?
実際に入れるべき配列は引数の方の物。ただし、配列の大きさが足りないときには同じ方で配列の大きさを変更し直して、その結果を返す……のか?
えー? なんだそりゃー。ようは引数のClassクラスを使って作り直すという事をしてるんでしょうけど、インターフェース的に、これってどうよ……。
確かに記述はシンプルになるけどあんまり使いたくないなぁ。