可比较的参数(Java)

时间:2015-04-20 05:23:09

标签: java comparable

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类型。如果是,为什么它必须是对象类型?

谢谢!

3 个答案:

答案 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); }