2013-03-08 10 views
10

मैं एक कस्टम क्लास बना रहा हूं जो तुलनीय लागू करता है, और अगर मैं दो परिभाषाओं की तुलना करने की कोशिश करता हूं जो मेरी परिभाषा से तुलनीय नहीं हैं तो मैं किसी प्रकार का अपवाद फेंकना चाहता हूं। क्या एपीआई में पहले से ही कोई उपयुक्त अपवाद है, या क्या मुझे अपना खुद का बनाना है?जावा "तुलनीय नहीं" अपवाद?

उत्तर

8

मुझे नहीं पता कि मुझे पता है।

सबसे सटीक अपवाद प्रतिनिधित्व करने के लिए यह शायद एक IllegalArgumentException है: http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html

आप शायद भी Comparable<CustomClass> जो गलत वर्ग का एक उदाहरण प्रदान करने से कॉल कर पाएगा को लागू किया जाना चाहिए।

+0

+1 करने के लिए एक गैर तुलनीय Test1 जोड़ने का प्रयास करते है। ClassCastException के लिए –

2

क्लासकास्ट अपवाद पर विचार करें, जावा संग्रह फ्रेमवर्क ऐसी स्थितियों के लिए फेंकता है। यही होता है जब हम `तुलनीय ` इंटरफेस के लिए एक 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। तुलना में संदर्भित किया गया है javadoc: https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html#compareTo-T-। लेकिन आदर्श रूप में, जैसा कि कॉरी केंडल ऊपर बताता है, आपको कक्षा पदानुक्रम के साथ आने की कोशिश करनी चाहिए जो इसे रोकती है। – philo

संबंधित मुद्दे