2013-03-08 16 views
10

Sto creando una classe personalizzata che implementa comparabili e mi piacerebbe lanciare qualche tipo di eccezione se qualcuno cerca di confrontare due oggetti che non sono confrontabili con la mia definizione. Esiste già un'eccezione valida nell'API o devo creare il mio?java "non confrontabile" eccezione?

risposta

2

Considera ClassCastException, è ciò che Java Collection Framework genera per tali situazioni. Questo è ciò che accade quando cerchiamo di aggiungere un Test1 non paragonabile ad un 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) 
+0

+1 per ClassCastException. Questo è il riferimento in compareTo javadoc: https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html#compareTo-T-. Ma idealmente, come dice Cory Kendall sopra, dovresti cercare di creare una gerarchia di classi che impedisca questo. – philo