接口Delayed要求任何实现该接口的类都需要定义一个compareTo方法,以便与其getDelay方法提供一致的排序。然而,我想知道为什么在Java 8中没有默认实现,因为按合同要求,
compareTo
只依赖于getDelay
。这是因为留给实现类吗?还是在覆盖超级接口时无法创建默认方法?编辑:为了使我的问题更容易理解,这里有一个例子:interface Delayed extends Comparable<Delayed> {
long getDelay(TimeUnit unit);
@Override
default int compareTo(Delayed o) {
// might not be the perfect "compareTo" implementation, but you get the point
return o == this? 0:
Long.compare(this.getDelay(TimeUnit.NANOSECONDS), o.getDelay(TimeUnit.NANOSECONDS);
}
}
Object
呢?它的引用?它的 toString?它的 hashcode? - Powerlord