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

2022-09-02 22:19:17

我想知道为什么Arrays类的排序方法要求一个Object[]类型的参数。为什么参数的类型不是可比较的[]。如果你没有传递一个Compable[],它会生成一个ClassCastException。

为什么。。。公共静态 void sort(Object[] a) 而不是 public static void sort(Comparable[] a) ?谢谢


答案 1

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

您可以执行以下操作:

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

但你不能这样做:

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

因此,优化还为时过早:)


答案 2

否则你不能通过。Object[]