“可比较”的精确程度是多少?

时间:2014-02-10 02:27:49

标签: java

Comparable界面看起来像

interface Comparable<T>
{
  public int compareTo(T other);
...
}

对于Comparable<T>的实现与T类型的实现之间的关系,本身并未说明任何内容。 Java规范的文本似乎暗示Comparable<T>的实现应始终是T的子类,但据我所知,它没有明确说明。这应该是吗?此外,如果A的实现Comparable<T>T严格子类,则反对称规则似乎建议对于T的某些超类Comparable<Ap>Ap必须是A的实现。这是一个相当严格的要求。事实上,它是非常严格的,我认为通常不可能这样做,除非这两个类是专门为此目的而构建的。有什么想法吗?我错过了什么,或者这是一个奇怪的界面?

1 个答案:

答案 0 :(得分:5)

这个界面早在仿制药推出之前就已存在,最初看起来像

public int compareTo(Object other);

这仍然是编译成字节代码后的样子。通过添加泛型,该界面被修改以提供一些基本类型安全性。

如果我理解你的问题,你会问“是什么阻止我这样做?”

class SomeClass implements Comparable<SomeUnrelatedClass>

嗯,没什么。回到compareTo方法与Objects一起使用时,您必须考虑compareTo对哪种类型有用,并且更新界面仍然如此。