What type of Exception should I throw if the wrong type of object is passed into my compareTo method?

ClassCastException?

3

2 Answers

It would be IllegalArgumentException in a general sense when the passed in value is not the right one.

However, as @Tom's answer below suggests, it could also be a ClassCastException for incorrect types. However, I am yet to encounter user code that does this.

But more fundamentally, if you're using the compareTo with generics, it will be a compile time error.

Consider this:

public class Person implements Comparable<Person> { private String name; private int age; @Override public int compareTo(Person o) { return this.name.compareTo(o.name); } } 

Where do you see the possibility of a wrong type being passed in the above example?

6

Unsurprisingly, the API docs specify the exception to be thrown in this case.

ClassCastException - if the specified object's type prevents it from being compared to this object.

Assuming you are using generics, you will automatically get this exception if someone attempts to call your methods using raw types, reflections or some other unsafe technique.

4

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy