实现的类Comparable<T>通常为自己实现它,例如
class MyInteger implements Comparable<MyInteger> { ... }
class MyString implements Comparable<MyString> { ... }
Run Code Online (Sandbox Code Playgroud)
但是没有什么可以阻止你为不同的类型实现它:
class MyString implements Comparable<MyInteger> { ... }
Run Code Online (Sandbox Code Playgroud)
这将允许您比较a MyString到a MyInteger.
正如Javadoc中所描述的那样,Comparable旨在模拟自然排序,这是一个总顺序,因此为了能够具有反对称性,参数的类型compareTo应该与该方法的类型相同.定义.
但实施有任何实际用途(滥用)class SomeType implements Comparable<OtherType>吗?
更新:Joni和我提供的答案提供了Comparable<Supertype>隐式实现的实际示例,即您的类可传递地实现该接口的位置.知道是否有人有明确使用它的例子会很有趣.
如果存在父母/子女关系,您确实会发现这一点。例如,Enum 类Comparable<E>以 E 作为类型参数来实现。所有枚举都共享这一compareTo 实现。
澄清一下:Enum<ConcreteClass>实现Comparable<ConcreteClass>. 如果它遵循您期望它实现的模式Comparable<Enum<ConcreteClass>>