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

时间:2010-02-11 18:19:27

标签: java interface casting comparable

我想知道为什么Arrays类的sort方法要求Object []类型的参数。为什么参数不是Comparable []类型。如果您没有传递Comparable [],则会生成ClassCastException。

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

2 个答案:

答案 0 :(得分:8)

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

你可以这样做:

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

但你不能这样做:

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

所以这是不成熟的优化:)

答案 1 :(得分:4)

否则您无法通过Object[]