java - Why is this code throwing a ClassCastException and how to avoid it -


इस कोड पर गौर करें:

  import java.util। *; कक्षा jm45 लागू करता है Comparator & lt; jm45 & gt; {निजी इंट एक्स; Jm45 (इंट इनपुट) {x = इनपुट; } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग एल्ग्स []) {सूची सूची = नया अर्रेलिस्ट (); List.add (नया jm45 (2)); List.add (नया jm45 (2)); Collections.sort (सूची); // दोषपूर्ण लाइन} सार्वजनिक इंट की तुलना करें (जेएम 45 टी 1, जेएम 45 टी 2) {रिटर्न टी 1 एक्स - टी 2 एक्स। }}  

अपनी श्रेणी के बजाय Comparator & lt; jm45 & gt; तुलनात्मक & lt; jm45 & gt;

तुलनाकर्ता जानता है कि दो वस्तुओं की तुलना कैसे करें - एक तुलनात्मक जानता है कि किसी अन्य की तुलना कैसे करें स्वयं के साथ।

आपको या तो सॉर्ट () का उपयोग करने के लिए एक तुलनित्र (दूसरे तर्क के रूप में) में जाने की आवश्यकता है या मान तुलनीय होने चाहिए।

P> यहां एक ऐसा संस्करण है जो इसके बजाय तुलनात्मक इंटरफ़ेस का उपयोग करता है:

  import java.util। *; कक्षा परीक्षण लागू करता है तुलनात्मक & lt; टेस्ट & gt; {निजी इंट एक्स; टेस्ट (इंट इनपुट) {x = इनपुट; } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग अरिज []) {सूची & lt; परीक्षण & gt; सूची = नया ArrayList & lt; Test & gt; (); List.add (नया टेस्ट (2)); List.add (नया टेस्ट (2)); Collections.sort (सूची); } सार्वजनिक अंतर की तुलना करने के लिए (अन्य टेस्ट करें) {वापसी एक्स - अन्य। X; }}  

और यहां एक संस्करण है जो Comparator इंटरफ़ेस का उपयोग करता है:

  import java.util। *; क्लास टेस्टकॉमपरेटर लागू करता है Comparator & lt; Test & gt; {सार्वजनिक इंट की तुलना (टेस्ट टी 1, टेस्ट टी 2) {रिटर्न टी 1.एटीएक्स () - टी 2.एटीएक्स (); }} क्लास टेस्ट {निजी इंट x; टेस्ट (इंट इनपुट) {x = इनपुट; } Int getX () {वापसी x; } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग अरिज []) {सूची & lt; परीक्षण & gt; सूची = नया ArrayList & lt; Test & gt; (); List.add (नया टेस्ट (2)); List.add (नया टेस्ट (2)); संग्रह। स्रोत (सूची, नया टेस्ट कॉमपारेटर ()); }}  

इसलिए। उदाहरण के लिए, आप आम तौर पर एक स्ट्रिंग से एक दूसरे के साथ तुलना करने के लिए नहीं पूछेंगे - मूल स्ट्रिंग के साथ कुछ भी नहीं करना है।


Comments

Popular posts from this blog

email - PHP mail error ... failed to open stream : permission denied -

c# - ListView onScroll event -

c - Linux mmap() error -