小数と分数を表すclassなど似たような役割なら、
classを超えてComparableでもいっか、
とか思ってしまって反省しています。
Effective Javaにあるんですね、
【Effective Java】項目12:Comparable の実装を検討するって。
compareToを定義するならequalsとhashCodeも定義すべきだし、
a.compareTo(b)==0とa.equals(b)==trueが違うなら、
compareToで比較するTreeSetとequalsで比較するHashSetで
結果が違っちゃうんですね。
compareToが違うclassの比較を許すなら、
equalsでも許さねばならず、
流石にそれはおかしいだろう、
ということでしょうか。
実際、
クラスが適切にパラメータ化されていれば、ClassCastExceptionがスローされます。 契約は、クラス間の比較を排除してはいませんが、 リリース1.6では、Javaプラットフォームライブラリーのどのクラスも、 クラス間の比較をサポートしません。