为什么Arrays.sort使用Object []而不是Comparable []?


问题内容

我想知道为什么Arrays类的sort方法要求一个Object []类型的参数。为什么参数不是Comparable []类型。如果不传递Comparable
[],它将生成ClassCastException。

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


问题答案:

因为第二种形式需要重新分配数组。即使您知道数组仅包含可比较的数组,但是如果原始类型为Object [],也不能将其强制转换为Comparable
[],因为数组类型不匹配。

你可以做:

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

但是你不能做:

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

所以这是过早的优化:)