Mis*_*hax 6 java arrays comparable
方法
public static int binarySearch(Object[] a, Object key)
Run Code Online (Sandbox Code Playgroud)
在其实现中的Arrays类导航通过a
binarySearch算法之后的数组参数,并将a
into 的元素转换为Comparable
invokes,compareTo(key)
直到它找到匹配或耗尽可能性.
然而,我对实现感到困惑,如果是这种情况,方法将始终将元素强制转换为Comparable
,并且ClassCastException
如果它遇到未实现的元素,则会抛出一个,如果Comparable
API用户不熟悉该方法将只考虑数组元素的比较器,而不是密钥的比较器,通过防止在数组类型与Comparable不兼容的情况下进行调用的编译更加万无一失,并且如果执行调用也更有效该方法定义为
public static int binarySearch(Comparable[] a, Object key)
Run Code Online (Sandbox Code Playgroud)
?将第一个参数定义为Object数组有什么好处?
编辑我在发布问题之后才看到这个问题并且已经回答但是这里有一个相关的帖子:为什么Arrays.sort采用Object []而不是Comparable []?他们声明,如果方法采用参数(Comparable [],Object),就不可能将Object []类型的数组传递给该方法,而不需要"重新分配",这也很昂贵.