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
的实现。这是一个相当严格的要求。事实上,它是非常严格的,我认为通常不可能这样做,除非这两个类是专门为此目的而构建的。有什么想法吗?我错过了什么,或者这是一个奇怪的界面?
答案 0 :(得分:5)
这个界面早在仿制药推出之前就已存在,最初看起来像
public int compareTo(Object other);
这仍然是编译成字节代码后的样子。通过添加泛型,该界面被修改以提供一些基本类型安全性。
如果我理解你的问题,你会问“是什么阻止我这样做?”
class SomeClass implements Comparable<SomeUnrelatedClass>
嗯,没什么。回到compareTo
方法与Objects一起使用时,您必须考虑compareTo
对哪种类型有用,并且更新界面仍然如此。