java – Arrays.sort(object [])没有抛出classcastexception
发布时间:2020-12-14 06:00:17 所属栏目:Java 来源:网络整理
导读:码: public class CompareTest { public static void main(String[] args) { ArrayList list = new ArrayList(); (list).add(new CompareTest()); Arrays.sort(list.toArray()); //Does not throw Exception,why ? Collections.sort(list); //throws ClassC
码:
public class CompareTest { public static void main(String[] args) { ArrayList list = new ArrayList(); (list).add(new CompareTest()); Arrays.sort(list.toArray()); //Does not throw Exception,why ? Collections.sort(list); //throws ClassCastException } } 根据Java Doc: 根据提示,将指定的对象数组按升序排序 为什么Arrays#sort不会抛出JavaDoc所声明的ClassCastException? 解决方法
因为Arrays.sort()的源代码有这个快捷方式:
int nRemaining = hi - lo; if (nRemaining < 2) return; // Arrays of size 0 and 1 are always sorted 因此,它不会检查数组的元素是否实现Comparable,因为它不必对只有一个元素的数组进行排序. 请注意,javadoc不保证抛出ClassCastException. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |