我一直在努力学习同类课程,我知道正确的语法以及在大多数情况下它的使用方法。如:
int result = ObjectA.compareTo(ObjectB);
如果两个对象相同,将返回值0;如果对象A小于对象B则为负值,如果A大于B,则为正值。
然而,当我去实际编写一个使用compareTo方法的程序时,编译器说它无法找到compareTo方法。
我的问题是:我是否必须直接从Comparable类继承才能使用compareTo方法?我问的唯一原因是因为你不必显式继承像toString或equals这样的方法...因为所有东西都是从对象继承的。 CompareTo在哪里?
答案 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)
#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
的哪些字段参与评估对象的较小 - 或更大。