앞서 선언 한 Comparator를 사용하여 ArrayList에서 Collections.sort()를 호출합니다. 어떤 이유 Collections.sort (List <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의 요소를 캐스팅하기 위해 노력하고있다. 왜 이것이 일어날 수 있습니까? 그것은 어떤 소용이 있다면
, 여기 null
아마 내 스택 트레이스
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'과 비교 자의 정의를 게시하십시오. –