为什么Arrays.binarySearch(Object [],Object)采用Object args?

Mis*_*hax 6 java arrays comparable

方法

public static int binarySearch(Object[] a, Object key) 
Run Code Online (Sandbox Code Playgroud)

在其实现中的Arrays类导航通过abinarySearch算法之后的数组参数,并将ainto 的元素转换为Comparableinvokes,compareTo(key)直到它找到匹配或耗尽可能性.

然而,我对实现感到困惑,如果是这种情况,方法将始终将元素强制转换为Comparable,并且ClassCastException如果它遇到未实现的元素,则会抛出一个,如果ComparableAPI用户不熟悉该方法将只考虑数组元素的比较器,而不是密钥的比较器,通过防止在数组类型与Comparable不兼容的情况下进行调用的编译更加万无一失,并且如果执行调用也更有效该方法定义为

public static int binarySearch(Comparable[] a, Object key) 
Run Code Online (Sandbox Code Playgroud)

?将第一个参数定义为Object数组有什么好处?

编辑我在发布问题之后才看到这个问题并且已经回答但是这里有一个相关的帖子:为什么Arrays.sort采用Object []而不是Comparable []?他们声明,如果方法采用参数(Comparable [],Object),就不可能将Object []类型的数组传递给该方法,而不需要"重新分配",这也很昂贵.

Mis*_*hax 0

请参阅为什么 Arrays.sort 采用 Object[] 而不是 Comparable[]?。问题是,这会给声明为 Object[] 类型的数组带来问题,即使它们只包含可比较对象。