可比类

时间:2013-03-14 22:18:59

标签: java comparable

我一直在努力学习同类课程,我知道正确的语法以及在大多数情况下它的使用方法。如:

int result = ObjectA.compareTo(ObjectB); 
如果两个对象相同,

将返回值0;如果对象A小于对象B则为负值,如果A大于B,则为正值。

然而,当我去实际编写一个使用compareTo方法的程序时,编译器说它无法找到compareTo方法。

我的问题是:我是否必须直接从Comparable类继承才能使用compareTo方法?我问的唯一原因是因为你不必显式继承像toString或equals这样的方法...因为所有东西都是从对象继承的。 CompareTo在哪里?

5 个答案:

答案 0 :(得分:6)

您需要实现Comparable界面:

public class MyClass implements Comparable<MyClass>

然后声明compareTo()方法:

public int compareTo(MyClass myClass){
    //compare and return result
} 

答案 1 :(得分:1)

Comparable是一个接口,而不是一个类。所以你要实现接口,而不是类的子类。此外,实现接口意味着您自己在实现类中实现compareTo方法。

答案 2 :(得分:0)

  1. 首先,它只适用于实例。由于您的命名,不知道您的比较是比较对象还是类本身。我假设你正在使用对象:)
  2. 您要使用#compareTo进行比较的课必须实施Comparable。在不必实施Comparable的情况下实现此目的的另一种方法是提供排序方法Comparator期待您的课程。

答案 3 :(得分:0)

Comparable是一个接口,因此您不会“继承”它(extends),而是实现它(implements)。

您可以在班级中编写自己的compareTo方法,而无需指定Comparable界面,但API中的方法无法知道您的对象是否符合Comparable的合同强制执行。因此,您将无法使用期望使用强制Arrays.sort()的对象的Comparable之类的方法。

答案 4 :(得分:0)

如果您希望比较类A的对象,可能是因为您希望排序这些对象的列表,则需要使类A实现{ {1}}界面。

一旦类Comparable实现A,它必须实现并定义Comparable的行为,这实际上是想要两个类{{}}的对象1}}被比较。

这是一种方法,您可以在此方法中决定类compareTo的哪些字段参与评估对象的较小 - 或更大