我想知道为什么Arrays类的sort方法要求Object []类型的参数。为什么参数不是Comparable []类型。如果您没有传递Comparable [],则会生成ClassCastException。
为什么...... public static void sort(Object [] a)而不是 public static void sort(Comparable [] a)? 感谢
答案 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[]
。