是否有理由为其他类型的类型实现java.util.Comparable?

And*_*ner 6 java

实现的类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>隐式实现的实际示例,即您的类可传递地实现该接口的位置.知道是否有人有明确使用它的例子会很有趣.

Jon*_*oni 4

如果存在父母/子女关系,您确实会发现这一点。例如,Enum 类Comparable<E>以 E 作为类型参数来实现。所有枚举都共享这一compareTo 实现。

澄清一下:Enum<ConcreteClass>实现Comparable<ConcreteClass>. 如果它遵循您期望它实现的模式Comparable<Enum<ConcreteClass>>