10

我正在制作一个实现可比较的自定义类,如果有人试图比较两个我的定义不可比较的对象,我想抛出某种异常。API 中是否已经有合适的例外,还是我需要自己制作?

4

2 回答 2

9

从来没听说过。

表示这一点的最准确的异常可能是IllegalArgumentExceptionhttp ://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 回答