2013-03-08 60 views
10

我正在做一個實現可比較的自定義類,如果有人試圖比較兩個我的定義沒有可比性的對象,我想拋出某種異常。 API中是否存在合適的異常,還是需要自己創建?java「不可比」異常?

回答

2

考慮ClassCastException,這是Java Collection Framework針對這種情況拋出的問題。當我們嘗試向TreeSet添加一個不可比較的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) 
+0

對於ClassCastException的+1。這在compareTo javadoc中引用:https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html#compareTo-T-。但理想情況下,正如科裏肯德爾上面所說的,你應該嘗試提出一個防止這種情況的類層次結構。 – philo 2017-03-17 17:40:58