我正在制作一个实现可比较的自定义类,如果有人试图比较两个我的定义不可比较的对象,我想抛出某种异常。API 中是否已经有合适的例外,还是我需要自己制作?
问问题
2787 次
2 回答
9
从来没听说过。
表示这一点的最准确的异常可能是IllegalArgumentException
:
http ://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 回答