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

Joe*_*oel 18 java casting interface comparable

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

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

Ale*_*ing 9

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

你可以做:

Object[] arr = new String[0];
String[] sarr = (String[]) arr;
Run Code Online (Sandbox Code Playgroud)

但你做不到:

Object[] arr = new Object[0];
String[] sarr = (String[]) arr;
Run Code Online (Sandbox Code Playgroud)

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