我正在做一個實現可比較的自定義類,如果有人試圖比較兩個我的定義沒有可比性的對象,我想拋出某種異常。 API中是否存在合適的異常,還是需要自己創建?java「不可比」異常?
10
A
回答
8
不是我所知道的。
最準確的例外來表示這可能是一個IllegalArgumentException
: http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html
你或許應該也可以實現Comparable<CustomClass>
這將防止用戶提供了錯誤的類的實例。
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
相關問題
- 1. 的Java:檢查是否可比不爲空返回NullPointerException異常
- 2. Java webdriver:元素不可見異常
- 3. 的java:不可解析日期異常
- 4. Java不變異常
- 5. 內存不足異常java
- 6. Java不拋出異常
- 7. 不幸的Java異常:java.lang.NoSuchMethodError
- 8. Java的斷言,在比較/對比單元測試和異常
- 9. Java:可以拋出異常拋出異常嗎?
- 10. 爲什麼java ArrayIndexOutOfBound異常擴展IndexOutofBound異常不是可拋出的?
- 11. 不可捕捉異常(PowerShell)
- 12. 不可捕捉的異常?
- 13. Java POI異常
- 14. Java ArrayIndexOutOfBound異常
- 15. Java異常
- 16. 異常在Java
- 17. Java Path異常
- 18. java DataOutputStream異常
- 19. Java異常 - TransactionRolledbackLocalException
- 20. Java異常java.lang.IllegalThreadStateException
- 21. java異常
- 22. java sqlite異常
- 23. Java FutureTask異常
- 24. Java異常ArrayIndexOutOfBounds
- 25. Java PrintWriter異常
- 26. Java異常(java.util.InputMismatchException)
- 27. Java - XMLGregorianCalendar異常
- 28. ArrayIndexOutOfBounds異常Java
- 29. null異常java
- 30. Java異常Stacktrace
+1對於「Comparable」接口。 –
2013-03-08 04:16:26