Java compareTo()方法返回classCastException

假设我有一个Employee基类和Manager子类,它扩展了Employee.Now假设我创建一个类型为Employee的对象x和一个类型为Manager的对象y,并调用x.compareto(y)触发没有异常并比较x和y因为员工即y被强制转换为员工,但当我调用y.compareto(x)时,我得到一个classCastException.我需要知道为什么会发生这种情况以及如何阻止x.compareto(y)执行,因为x和y来自不同classes.My的想法是在Reflection类中使用getclass()方法,如下所示:

if (getClass() != other.getClass()) 
throw new ClassCastException();

我也想知道有没有其他方法来实现这一点.

解决方法

您应该在Employee类中实现compareto()并使用以下命令启动它:

Employee o = (Employee)other;

然后继续将其与o进行比较 – 这将确保您比较两个员工(这是最低的共同标准).

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...