【问题标题】:Should i implement or extend comparable to the constructor and how?我是否应该实现或扩展与构造函数相当的功能以及如何实现?
【发布时间】:2012-03-05 22:48:02
【问题描述】:

我有一个类调用 Job,它定义了 (jobNumber,executionTIme,priorityLevel)(例如,用于构造函数 Job)我将把它用于 priorityQueue,它被导入并在其他类调用 JobLine 中使用。

我在 Job 类中有一个方法调用 compareTo() 来比较 Job 对象之间的优先级。

应该如何实现或扩展Comparable 到 Job 构造函数,以便PriorityQueue 知道要比较哪个优先级。

感谢您的帮助。

【问题讨论】:

  • 你不能extend Comparable 因为它是一个接口,而不是一个类。
  • 好的,在这种情况下,我应该实现 Comparable 来覆盖方法 compareTo 吗?我试过了,我得到了错误。还有其他方法吗?
  • 没有方法可以覆盖,因为接口没有方法实现。如果您遇到错误,应将其与相关代码摘录一起包含在您的问题中。
  • @AndrewMarshall 我想我明白你在说什么,但另一个interface 可以extend Comparable。不过,我只是在迂腐,你说得对,class 不能 extendinterface,例如 Comparable

标签: java


【解决方案1】:

根据您所写的内容,您可以像这样简单地实现(请注意,您可以实现接口但不能扩展它):

class Job implements Comparable<Job> {
    @Override
    public int compareTo(final Job other) {
        return getPriorityLevel() - other.getPriorityLevel();
    }
}

请参阅this 问题以了解如何正确实现接口。

但是,考虑到执行时间和作业数量,您可以使用一些更“高级”的算法,但如果是这种情况,您必须说明您想要什么。

我不明白问题中“将其扩展到构造函数”是什么意思

【讨论】:

  • 请注意getPriorityLevel() - other.getPriorityLevel() 可能导致整数溢出。
【解决方案2】:

一个类可以是extended,一个接口可以是implemented

您可以阅读this 教程,了解如何实现接口。

【讨论】:

  • 这应该作为评论发布,而不是作为完全没有解释任何问题的答案。
猜你喜欢
  • 2013-01-30
  • 1970-01-01
  • 1970-01-01
  • 2019-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
相关资源
最近更新 更多