我使用我之前聲明的比較器調用ArrayList上的Collections.sort()。什麼可能導致Collections.sort(列表<T>,比較儀<? super T>)拋出ClassCastException?
ArrayList<Employee> list = new ArrayList<Employee>();
Comparator<Employee> comparator = new Comparator<Employee>() {
public int compare(Employee o1, Employee o2) {
return o1.getName().toLowerCase().compareTo(o2.getName().toLowerCase());
}
};
...
Collections.sort(list, comparator);
出於某種原因,排序是想投我的ArrayList元素可資比較,即使我通過一個比較。爲什麼會發生這種情況?
如果它是任何使用的,這裏是我的堆棧跟蹤
Exception in thread "Thread-3" java.lang.ClassCastException: processing.app.EmployeeManager$PrettyOkayEmpolyee cannot be cast to java.lang.Comparable
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at foobar.Main.doSomeSorting(Main.java:140)
...
at java.lang.Thread.run(Unknown Source)
發佈您的信息。 – Falmarri
沒有看到代碼就很難告訴你什麼是錯的。發佈'Flub'和比較器的定義。 –