java - 为什么要在 compareTo(Object) 中进行转换

标签 java comparable

public int compareTo(Object x) {
    Task other = (Task)x;

    if (other.priority == this.priority) {
        System.out.println("Each task has the same priority level.");
        return 0;
    } else if (other.priority > this.priority) {
        System.out.println(other.priority + "\n" + this.priority);
        return -1;
    } else {
        System.out.println(this.priority + "\n" + other.priority);
        return 1;
    }
}

这是我为类编程作业准备的代码。我不确定我为什么使用 Task other = (Task)x; 或者它在这里做什么。其余的我明白了。如果有人能快速解释这里的实际情况,我将不胜感激。谢谢!

最佳答案

您正在将 Object x 转换为 Task other - ObjectTask 是不同的类型,因此您需要转换,以便您可以将 x 视为预期类型(并获取它的字段)。

通常在 compareTo() 中,您首先会得到类似 if (x instanceof Task) 的东西,然后再盲目地转换它 - 如果您不这样做并且类型不同,那么事情会崩溃)

关于java - 为什么要在 compareTo(Object) 中进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34167199/

相关文章:

用于 LinkedList 的 Java compareTo

java - 使用 Comparable 接口(interface)对 ArrayList 进行排序

在 Kotlin 中排序

java - 在java中对齐多维数组?

java - Eclipse,如何运行多个ant目标

java - Android PICASSO - 图像未加载到 ImageView + 停止发生以下所有语句

java - 将当前日期转换为下一个 View 的方法

java - 改进 Comparable<T> compareTo 性能

java - Spring Security - @PreAuthorize 返回 404

java - Java bean 和实现 Comparable 等接口(interface)的约定是什么?