Tôi đang tạo một lớp tùy chỉnh thực hiện so sánh và tôi muốn ném một loại ngoại lệ nếu ai đó cố gắng so sánh hai đối tượng không thể so sánh được với định nghĩa của tôi. Có một ngoại lệ thích hợp đã có trong API, hay tôi cần phải làm cho riêng của tôi?java "không thể so sánh" ngoại lệ?
Trả lời
Không phải là tôi biết.
Các ngoại lệ chính xác nhất để miêu tả này có lẽ là một IllegalArgumentException
: http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html
Bạn nên có lẽ cũng được thực hiện Comparable<CustomClass>
mà sẽ ngăn chặn những người gọi từ việc cung cấp một thể hiện của lớp sai.
Xem xét ClassCastException, đó là những gì Java Collection Framework ném cho các tình huống như vậy. Đây là điều xảy ra khi chúng tôi cố gắng thêm Test1 không thể so sánh vào 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)
+1 cho ClassCastException. Điều này được tham chiếu trong compareTo javadoc: https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html#compareTo-T-. Nhưng lý tưởng, như Cory Kendall đã nói ở trên, bạn nên cố gắng tìm ra một hệ thống phân cấp lớp để ngăn chặn điều này. – philo
- 1. So sánh Trình xử lý ngoại lệ Delphi
- 2. So sánh Java Array
- 3. Java so sánh Mảng
- 4. Ngoại lệ Java và Ngoại lệ C++
- 5. Java: bắt ngoại lệ cụ thể
- 6. java: không thể rethrow ngoại lệ: Unhandled loại trừ ngoại lệ
- 7. Lỗi so với ngoại lệ trong Dart
- 8. Lỗi không thể so sánh trong node.js
- 9. Java: ngoại lệ ngày không thể gắn nhãn
- 10. Không thể so sánh hai phần tử trong mảng
- 11. Thực hiện so sánh Java
- 12. Java So sánh Hai Lists
- 13. So sánh datetimes bằng không so sánh
- 14. So sánh C# và Java
- 15. OpenCV Java ngoại lệ
- 16. java So sánh hai ngày
- 17. So sánh HashMaps trong Java
- 18. Ngoại lệ Java không may: java.lang.NoSuchMethodError
- 19. Java ngoại lệ không bị bắt?
- 20. Ngoại lệ Java không bị bắt gặp
- 21. không thể so sánh Generic Values
- 22. Các lớp ngoại lệ Java
- 23. Java - Ngoại lệ JSON Null
- 24. Java ImageIO: Ngoại lệ Weirdness
- 25. C# Mã lỗi so với ngoại lệ
- 26. So sánh bitwise Java của một byte
- 27. Gson, JsonElement, So sánh chuỗi trong Java
- 28. Java Async Http khách hàng so sánh
- 29. java so sánh hai đối tượng Mẫu
- 30. Java So sánh các địa chỉ
+1 cho giao diện 'So sánh'. –