java重载未按预期运行
我正在做一个酒店,我的客户被存储在一个树形结构,以便他们可以很容易地搜索
我的客户机类有两个compareTwo方法。一个用于将客户端与另一个客户端进行比较,另一个用于将其与int进行比较。客户端应为Compariable类型,因为它位于实现Compariable的树结构中
//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)方法并返回一个错误,即my int无法转换到客户端。我想这是因为Object是int(?)的超类但我不太知道如何修复它。我试图解决这个问题,但似乎无法在不修改整个代码的情况下解决它
谢谢你的帮助
# 1 楼答案
Java的
TreeMap
和TreeSet
使用compareTo(T)
方法(即,对于您似乎正在使用的原始类型,compareTo(Object)
,因此您的重载方法被忽略当然,虽然可以重载
compareTo
方法,但不能强制Java的数据结构使用它一种可能的方法是让
compareTo(Object)
方法动态检查类型: