如果传递了错误的对象类型,我应该抛出什么类型的异常?

rit*_*tch 11 java exception comparable

如果将错误类型的对象传递给我的compareTo方法,我应该抛出什么类型的Exception?

ClassCastException异常?

ada*_*shr 20

这将是IllegalArgumentException在一般意义上,当在值传递不正确的.

但是,正如@ Tom的答案所示,它也可能是一个ClassCastException错误的类型.但是,我还没有遇到执行此操作的用户代码.

但更重要的是,如果你使用compareTowith泛型,那将是一个编译时错误.

考虑一下:

public class Person implements Comparable<Person> {
    private String name;
    private int age;

    @Override
    public int compareTo(Person o) {
       return this.name.compareTo(o.name);
    }
}
Run Code Online (Sandbox Code Playgroud)

您在哪里看到上述示例中传递错误类型的可能性?

  • +1:编译时间比运行时错误更好. (3认同)

Tom*_*ine 7

不出所料,API文档指定了在这种情况下抛出的异常.

ClassCastException - 如果指定对象的类型阻止将其与此对象进行比较.

假设您正在使用泛型,如果有人尝试使用原始类型,反射或其他一些不安全的技术来调用您的方法,您将自动获得此异常.