如果将错误类型的对象传递给compareTo方法,我应该抛出什么类型的异常?
ClassCastException异常?
答案 0 :(得分:20)
当传入的值不正确时,一般意义上是IllegalArgumentException
。
但是,如@Tom's answer below所示,对于不正确的类型,它也可能是ClassCastException
。但是,我还没有遇到执行此操作的用户代码。
但更重要的是,如果你使用带有泛型的compareTo
,那将是一个编译时错误。
考虑一下:
public class Person implements Comparable<Person> {
private String name;
private int age;
@Override
public int compareTo(Person o) {
return this.name.compareTo(o.name);
}
}
您在哪里看到上述示例中传递错误类型的可能性?
答案 1 :(得分:6)
不出所料,API docs指定了在这种情况下抛出的异常。
ClassCastException - 如果指定对象的类型阻止它 与这个对象进行比较。
假设您使用的是泛型,如果有人试图使用原始类型,反射或其他一些不安全的技术来调用您的方法,您将自动获得此异常。