Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java "not comparable" exception?

I'm making a custom class that implements comparable, and I'd like to throw some kind of exception if somebody tries to compare two objects that are not comparable by my definition. Is there a suitable exception already in the API, or do I need to make my own?

like image 388
Mirrana Avatar asked Mar 08 '13 04:03

Mirrana


2 Answers

Not that I know of.

The most accurate Exception to represent this is probably an IllegalArgumentException: http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html

You should probably also be implementing Comparable<CustomClass> which will prevent callers from providing an instance of the wrong class.

like image 70
Cory Kendall Avatar answered Nov 08 '22 23:11

Cory Kendall


Consider ClassCastException, it is what Java Collection Framework throws for such situations. This is what happens when we try to add a non-comparable Test1 to a TreeSet

Exception in thread "main" java.lang.ClassCastException: Test1 cannot be cast to java.lang.Comparable
    at java.util.TreeMap.compare(TreeMap.java:1188)
    at java.util.TreeMap.put(TreeMap.java:531)
    at java.util.TreeSet.add(TreeSet.java:255)
    at java.util.AbstractCollection.addAll(AbstractCollection.java:334)
    at java.util.TreeSet.addAll(TreeSet.java:312)
    at java.util.TreeSet.<init>(TreeSet.java:160)
    at Test1.main(Test1.java:9)
like image 2
Evgeniy Dorofeev Avatar answered Nov 08 '22 23:11

Evgeniy Dorofeev