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