覆盖Object Class的compareTo方法

时间:2013-07-28 00:17:32

标签: java override

有人可以向我解释以下代码的作用。我是编程新手。我很难理解“当前对象”的含义。 此代码包含在实现Compareable接口的类中。它有一个conscutor,它接受一个int数字和String描述。它还有一个数字和描述的get方法。

    @Override
    public int compareTo (Object o)
    {
        Item i = (Item) o;
        if (this.getNumber () < i.getNumber())
            return -1;
        if (this.getNumber () > i.getNumber())
            return 1;
        return 0;

2 个答案:

答案 0 :(得分:3)

Item i = (Item) o;

此行将传入的对象 o 强制转换为类,然后将其存储在 i 上。

if (this.getNumber () < i.getNumber())

此行将您正在接收的对象您正在调用该方法的进行比较,特别是其数字字段。

return 0;

只有在以前的条件都不满足时才会到达此行。在这种情况下,当this.getNumber()等于i.getNumber()时,它返回0。

int x = objectOne.compareTo(objectTwo);

此假设行会将相应的返回值分配给 x

例如,如果objectOne.getNumber()小于objectTwo.getNumber(),则x将被赋予-1值。

答案 1 :(得分:0)

compareTo()返回int以指示比较值是大于(1),等于(0)还是小于(-1)。有什么问题?