블로그 이름

[ERROR] java.lang.ClassCastException: class model.test cannot be cast to class java.lang.Comparable 본문

개발/오류

[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 사용하도록 변경하여 해결하였다.