演算子オーバーロードのないJavaでオブジェクトの大小比較は .compareTo
メソッドですが、どちらがどちらだと正・0・負が返るのかそらで言えますか? 私は言えません。
そして戻り値の正・0・負がどうたったかの仕様を見つけたとして、それを参考にしつつif文の条件式を一目で理解できるでしょうか、スムーズに間違いなく書き下ろせるでしょうか? ⋯それは、とても容易です!
表にしてみましょう
不等号があった場合 |
compareTo による記述 |
---|---|
a < b |
a.compareTo(b) < 0 |
a <= b |
a.compareTo(b) <= 0 |
a > b |
a.compareTo(b) > 0 |
a >= b |
a.compareTo(b) >= 0 |
あっ。
compareTo
の右側に 0 を置くと、不等号の向きが保存されています。
結果的にそうなるように戻り値仕様が定められていたのですね。