18

我想知道为什么 Arrays 类的排序方法要求对象 [] 类型的参数。为什么参数不是 Comparable[] 类型。如果您不通过 Comparable[],则会生成 ClassCastException。

为什么... public static void sort(Object[] a)而不是public static void sort(Comparable[] a)?谢谢

4

2 回答 2

9

因为第二种形式需要重新分配数组。即使您知道您的数组仅包含可比较对象,如果原始类型是 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 回答