18

なぜ Arrays クラスの sort メソッドが Object[] 型のパラメーターを要求しているのか疑問に思っていました。パラメータが Comparable[] 型ではない理由。Comparable[] を渡さないと、ClassCastException が生成されます。

なぜ... public static void sort(Object[] a)であり、public static void sort(Comparable[] a)ではないのですか? ありがとう

4

2 に答える 2

9

2 番目の形式では、配列の再割り当てが必要になるためです。配列に同等のものしか含まれていないことがわかっていても、配列の型が一致しないため、元の型が Object[] の場合は単に Comparable[] にキャストすることはできません。

できるよ:

Object[] arr = new String[0];
String[] sarr = (String[]) arr;

しかし、あなたはできません:

Object[] arr = new Object[0];
String[] sarr = (String[]) arr;

したがって、それは時期尚早の最適化です:)

于 2010-02-11T18:38:52.970 に答える
4

そうしないと渡れませんObject[]

于 2010-02-11T18:29:46.830 に答える