Подтвердить что ты не робот

Java "несопоставимое" исключение?

Я создаю пользовательский класс, который реализует сопоставимые данные, и я хотел бы бросить какое-то исключение, если кто-то попытается сравнить два объекта, которые не сопоставимы по моему определению. Есть ли подходящее исключение уже в API, или мне нужно сделать свой собственный?

4b9b3361

Ответ 1

Не то, чтобы я знал.

Наиболее точным исключением для представления этого является, вероятно, IllegalArgumentException: http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html

Вероятно, вы также должны реализовать Comparable<CustomClass>, который запретит вызывающим абонентам предоставлять экземпляр неправильного класса.

Ответ 2

Рассмотрим ClassCastException, это то, что создает Java Collection Framework для таких ситуаций. Это то, что происходит, когда мы пытаемся добавить несопоставимый 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)