我正在做一个酒店,我的客户被存储在一个树形结构,以便他们可以很容易地搜索。
我的客户机类有两个comparetwo方法。一个用于将客户机与另一个客户机进行比较,另一个用于将其与int.client进行比较。客户机的类型应为comparable,因为它位于实现comparable的树结构中。
//compare Client to int
public int compareTo(int arg0) {
int result = this.clientId.compareTo(arg0);
return result;
}
//compare Client to object
public int compareTo(Object o) {
return (this.clientId).compareTo(((Client)o).clientId);
}
但并没有达到预期效果。每次调用这个函数时,它都使用compareto(object)方法并返回一个错误,我的int不能被转换到客户机。我想这是因为object是int(?)的超类,但不太知道如何修复它。我试图解决这个问题,但似乎无法解决它不改变我的整个代码。
谢谢你的帮助!
1条答案
按热度按时间7kjnsjlb1#
java 的
TreeMap
以及TreeSet
使用compareTo(T)
方法(例如,对于您似乎正在使用的原始类型,compareTo(Object)
,因此您的重载方法被忽略。当然,你也可以让
compareTo
方法,您不能强制java的数据结构使用它。一种可能的方法是
compareTo(Object)
方法动态检查类型: