私はこの記事で言及した問題を再現しようとしている:Comparison method violates its general contract私は2人の子供で異なる)のcompareToを(上書きする場合に何が起こるか、クラス
私はそれが自身のcompareToのしている親クラスAを、作っている何()関数は、その後、私が作ったクラスB、クラスAから継承など)(のcompareToをオーバーライド:
public int compareTo(Object o) { return super.compareTo(o);}
及びcは、クラスAから継承別のクラスとして)(のcompareToをオーバーライド:
public int compareTo(Object o) { return -super.compareTo(o);}
私はB/Cクラスのクラスのオブジェクトのリストを作成し、Collections.sort()を使ってそれらをソートしましたが、前の記事で説明したExceptionは表示されませんでした。変な注文。
誰かが私に助けてくれますか?ありがとう。
どのように注文しても効果が期待できますか? 'compareTo'をオーバーライドすることは、本質的に失敗に終わったように率直に聞こえます。 –
@LouisWassermanああ、実際に私はその記事で言及された問題を再現しようとしていましたが、私はcompareToがExceptionを再現すべきだと思っています。 – hj690
Javaのバージョンによっては、その例外が任意のテストデータに表示されることがあります。 –