개발/오류
[ERROR] java.lang.ClassCastException: class model.test cannot be cast to class java.lang.Comparable
Hide
2024. 12. 5. 23:27
ERROR [16:45:41.316] {DefaultQuartzScheduler_Worker-4} (ExternalLicensesJob.java:46) TEST
java.lang.ClassCastException: class model.test cannot be cast to class java.lang.Comparable (codel.test is in unnamed module of loader 'app'; java.lang.Comparable is in module java.base of loader 'bootstrap')
at java.base/java.util.TreeMap.compare(TreeMap.java:1291)
at java.base/java.util.TreeMap.put(TreeMap.java:536)
at java.base/java.util.TreeSet.add(TreeSet.java:255)
해당 에러는 test라는 객체를 생성하여, Set<test> set 셋에 add하려고 하던 중 발생했다.
class 변환에 실패했다는 말인데, set에서 comparable 시 test 객체 중복 제거가 안 되어 발생하였다.
해결 방법에는 2가지가 있다.
1. Comparable 인터페이스 사용
public class Stock implements Comparable<Stock> {
public int compareTo(Stock o) {
// ...
}
}
2. equals 상속
나는 Set이 아니라 List 사용하도록 변경하여 해결하였다.