compareTo的实现在哪里



下面是实现Comparator接口的类。

public class Descending implements Comparator {
@Override
public int compare(Object o1, Object o2) {
if( o1 instanceof Comparable && o2 instanceof Comparable) {
Comparable c1 = (Comparable) o1;
Comparable c2 = (Comparable) o2;
return c1.compareTo(c2);
}
return -1;
}
}

正如您所看到的,将比较两个整数值并对其进行排序。我想知道的是,在compare override方法中,它使用Comparable接口将两个值作为c2.compareTo(c1)进行比较。我认为Comparable也是接口,所以必须有compareTo方法的详细实现来比较两个整数。然而,当我进入compareTo方法时,它只是Comparable接口的内部。我试图根据这个假设来寻找compareTo的实现位置(Comparable方法中的compareTo应该在某个地方被覆盖以执行c2.compareTo(c1)(,但没有找到它,我认为没有地方定义它的覆盖方法。我的假设是错误的吗?

Object o1&Object o2实现了compareTo方法。

Instant类为例。该类的Javadoc显示implements Comparable<Instant>。这意味着这个类的作者承诺实现接口Comparable的方法。该接口上唯一的方法是compareTo

因此,我们向下滚动InstantJavadoc的页面,找到一个方法compareTo,该方法接受类型为Instant的参数。

如果你从OpenJDK项目中查看该类的开源实现,你会发现java.time.Instant#compareTo方法的源代码。

相关内容

  • 没有找到相关文章

最新更新