u-ryo's blog

various information for coding...

Category: Comparable

Comparable of Java

| Comments

小数と分数を表すclassなど似たような役割なら、 classを超えてComparableでもいっか、 とか思ってしまって反省しています。

Effective Javaにあるんですね、 【Effective Java】項目12:Comparable の実装を検討するって。 compareToを定義するならequalshashCodeも定義すべきだし、 a.compareTo(b)==0a.equals(b)==trueが違うなら、 compareToで比較するTreeSetequalsで比較するHashSetで 結果が違っちゃうんですね。 compareToが違うclassの比較を許すなら、 equalsでも許さねばならず、 流石にそれはおかしいだろう、 ということでしょうか。 実際、

クラスが適切にパラメータ化されていれば、ClassCastExceptionがスローされます。 契約は、クラス間の比較を排除してはいませんが、 リリース1.6では、Javaプラットフォームライブラリーのどのクラスも、 クラス間の比較をサポートしません。

【Effective Java】項目12 Comparableの実装を検討する