小数と分数を表す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プラットフォームライブラリーのどのクラスも、 クラス間の比較をサポートしません。