Java 爪哇语;“不可比”;例外?

Java 爪哇语;“不可比”;例外?,java,exception,comparable,Java,Exception,Comparable,我正在创建一个实现comparable的自定义类,如果有人试图比较我定义的两个不可比较的对象,我想抛出某种异常。API中是否已经存在合适的异常,或者我是否需要创建自己的异常?我不知道 表示这一点的最准确的异常可能是IllegalArgumentException: 您可能还应该实现Comparable,这将防止调用方提供错误类的实例。考虑一下ClassCastException,Java Collection Framework在这种情况下抛出了它。这就是当我们尝试将不可比较的Test1添加到

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

我不知道

表示这一点的最准确的异常可能是
IllegalArgumentException


您可能还应该实现
Comparable
,这将防止调用方提供错误类的实例。

考虑一下ClassCastException,Java Collection Framework在这种情况下抛出了它。这就是当我们尝试将不可比较的Test1添加到树集时发生的情况

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)
线程“main”java.lang.ClassCastException中的异常:Test1无法转换为java.lang.com 比较(TreeMap.java:1188) 位于java.util.TreeMap.put(TreeMap.java:531) 在java.util.TreeSet.add处(TreeSet.java:255) 位于java.util.AbstractCollection.addAll(AbstractCollection.java:334) 位于java.util.TreeSet.addAll(TreeSet.java:312) 位于java.util.TreeSet(TreeSet.java:160) 位于Test1.main(Test1.java:9)
+1表示ClassCastException。这在与javadoc的比较中引用:。但理想情况下,正如Cory Kendall上面所说,您应该尝试提出一个类层次结构来防止这种情况。