Person
を実装するクラスがある場合(たとえば、Comparable
と比較personA.height
して)、使用することは可能ですか?personB.height
personA < personB
代わりに
personA.compareTo(personB) == -1?
これを行う際に問題はありますか、それとも演算子をオーバーロードする必要がありますか?
Person
を実装するクラスがある場合(たとえば、Comparable
と比較personA.height
して)、使用することは可能ですか?personB.height
personA < personB
代わりに
personA.compareTo(personB) == -1?
これを行う際に問題はありますか、それとも演算子をオーバーロードする必要がありますか?
personA < personB
いいえ、代用はできません。また、Java では演算子をオーバーロードできません。
また、変更をお勧めします
personA.compareTo(personB) == -1
に
personA.compareTo(personB) < 0
あなたが今持っているものは、おそらくあなたのクラスでうまくいくでしょう。ただし、が 未満の場合は負の値compareTo()
を返すという契約があります。その負の値は -1 である必要はなく、別のクラスで使用するとコードが壊れる可能性があります。また、誰かがクラスのメソッドを別の (しかし準拠している) 実装に変更した場合にも、壊れる可能性があります。personA
personB
compareTo()
Java には演算子のオーバーロードはありません。あなたはおそらく C++ のバックグラウンドを持っています。
compareTo
メソッドを使用する必要があります。
それは不可能です。Java は、(組み込みのオーバーロードを除いて) 演算子のオーバーロードをサポートしていません。
ちなみに、 と書くのではなく、 と書く== -1
べき< 0
です。compareTo
特に-1/0/1ではなく、負/ゼロ/正の値を返す必要があるだけです。
Java には1をオーバーロードする演算子がないため、はい、問題があります。これは不可能です。
1もちろん、組み込みのオーバーロードがいくつかあります。+
演算子は、整数型、浮動小数点型、およびString
s で機能します。しかし、自分で定義することはできません。