10

比較可能なものを実装するカスタムクラスを作成しています。私の定義では比較できない2つのオブジェクトを誰かが比較しようとした場合、ある種の例外をスローしたいと思います。APIにはすでに適切な例外がありますか、それとも自分で作成する必要がありますか?

4

2 に答える 2

9

私が知っていることではありません。

これを表す最も正確な例外は、おそらく次のとおりです。http IllegalArgumentException: //docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html

おそらくComparable<CustomClass>、呼び出し元が間違ったクラスのインスタンスを提供するのを防ぐ実装も行う必要があります。

于 2013-03-08T04:07:43.700 に答える
2

ClassCastExceptionについて考えてみましょう。これは、Javaコレクションフレームワークがそのような状況でスローするものです。これは、比較できないTest1をTreeSetに追加しようとするとどうなるかです。

Exception in thread "main" java.lang.ClassCastException: Test1 cannot be cast to java.lang.Comparable
    at java.util.TreeMap.compare(TreeMap.java:1188)
    at java.util.TreeMap.put(TreeMap.java:531)
    at java.util.TreeSet.add(TreeSet.java:255)
    at java.util.AbstractCollection.addAll(AbstractCollection.java:334)
    at java.util.TreeSet.addAll(TreeSet.java:312)
    at java.util.TreeSet.<init>(TreeSet.java:160)
    at Test1.main(Test1.java:9)
于 2013-03-08T04:39:57.543 に答える