为什么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;
所以这是过早的优化:)