public int comareTo(Employee e) {
if (this.wage > e.wage) {
return 1;
}
else if(this.wage < e.wage) {
return -1;
}
else {
return 0;
}
}
这是我在Employee类中编写的可比方法。它在员工班级内,用于比较两名员工的工资。这是一个合法的可比方法,还是参数必须是object类型。如果是,为什么它必须是对象类型?
谢谢!
答案 0 :(得分:1)
使用Object
类的子类(例如Employee
)很好。然而,正如Jigar Joshi在他的回答中所建议的那样,compareTo
应该总是返回数值差异,而不仅仅是{-1,0,1}
。这样就可以轻松地对Employee
个实例的集合进行排序。
答案 1 :(得分:1)
如果在声明实现时指定类型参数,那么您不需要Object,您可以使用特定类型
这不是适当的比较实施,它应该返回一个员工与其他员工相比多大,而不是1,0,-1
答案 2 :(得分:1)
如果在您的班级标题中,您指定
implements Comparable<Employee>
然后你的compareTo方法没问题。
顺便提一下,您可以将代码缩短为:
public int comareTo(Employee e) {
return Integer.signum(this.wage - e.wage);
}