如果将错误类型的对象传递给我的 compareTo 方法,我应该抛出什么类型的异常?
类转换异常?
IllegalArgumentException
当传入的值不是正确的值时,这将是一般意义上的。
但是,正如@Tom 下面的回答所暗示的那样,它也可能是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);
}
}
您在哪里看到在上面的示例中传递了错误类型的可能性?
不出所料,API 文档指定了在这种情况下要抛出的异常。
ClassCastException - 如果指定对象的类型阻止它与此对象进行比较。
假设您使用的是泛型,如果有人尝试使用原始类型、反射或其他一些不安全的技术调用您的方法,您将自动获得此异常。