我对Java比较陌生,正在尝试解决一些基本问题。我的一个朋友请我解释一下这段代码会出什么问题。对我来说,它看起来非常好。我甚至试过了,它很管用。
你们能帮帮我吗?
public int compareTo(Object o){
Employee emp = (Employee) o;
return this.id - o.id;
}我找不到任何好的解释。id也是一个整数。
发布于 2014-07-04 01:49:14
Comparable是一个带有泛型的接口,因此它应该是Comparable<Employee>。(因此,您可以确定将员工与员工进行比较,而不是将员工与数字进行比较。)
Employee emp = (Employee) emp;讲得通?
将emp转换为Employee,并将其放入emp中。也许你是说(Employee) o
return this.id - o.id;你使用的是o,也就是Object,而Object没有.id,也许你是说emp.id
发布于 2014-07-04 01:50:16
如果您确定id是唯一,且不存在整数溢出(这将需要负ids),则代码应按预期工作。另一方面,如果两个Emp (被认为是不同的)可以有相同的id (因为它不是我们期望的名称中的标识符),那么它可能导致这样一种情况,即两个Emp被认为是相等的,而实际上它们不是。
发布于 2014-07-04 01:50:49
您没有使用emp实例来做任何事情...如果您尝试将Employee (this)与始终为Employee的Object o进行比较,则需要使用return this.id - emp.id;
https://stackoverflow.com/questions/24560138
复制相似问题