java - Why cant we have multiple compareTo functions in a class like we can have multiple compare functions? -
आयात करें java.util.Comparator; कक्षा के छात्रों के लिए तुलनात्मक & lt; छात्र & gt; {प्राइवेट इंट आरएन; प्राइवेट फ्लोट सीजी; निजी स्ट्रिंग का नाम; सार्वजनिक विद्यार्थी (पूर्णांक संख्या, फ्लैग सीजीपीए, स्ट्रिंग एनएम) {rn = num; सीजी = सीजीपीए; नाम = एनएम; } सार्वजनिक int getrn () {वापसी आरएन; } सार्वजनिक फ्लोट getcg () {वापसी सीजी; } सार्वजनिक स्ट्रिंग getname () {वापसी का नाम; } सार्वजनिक स्टेटिक क्लास ऑर्डर इनरिन लागू करता है Comparator & lt; Student & gt; {@ ओवरराइड पब्लिक इंट की तुलना (विद्यार्थी obj1, छात्र obj2) {obj1.rn & gt; obj2.rn वापसी} 1: (obj1.rn & lt; obj2.rn? -1: 0); }} सार्वजनिक स्टेटिक क्लास ऑर्डर बाय सीजीएम कॉम्पेरेटर & lt; Student & gt; {@ ओवरराइड पब्लिक इंट की तुलना (विद्यार्थी obj1, छात्र obj2) {obj1.cg obj2.cg लौटें} 1: (obj1.cg & lt; obj2.cg? -1: 0); }} / * ध्यान दें यह विफल करने के लिए! सार्वजनिक स्थैतिक वर्ग परीक्षण करने योग्य उपकरण तुलनात्मक & lt; छात्र & gt; {@ ओवरराइड पब्लिक इंट की तुलना करें (विद्यार्थी obj) {वापसी सीजी & gt; obj2.cg? 1: (सीजी & lt; obj2.cg? -1: 0); }} * / @ ओवरराइड पब्लिक इंट की तुलना करें (छात्र ओजेजी 2) // जब ओवरराइड करने वाले प्रकारों को संगत होना है यानी या तो विरासत से संबंधित है {वापसी आरएन & gt; obj2.rn? 1: (आर एन एंड एलटी; obj2.rn? -1: 0); } सार्वजनिक स्ट्रिंग टूस्ट्रिंग () {वापसी आरएन + नाम + सीजी; }} प्रदर्शित त्रुटि: "गैर-स्थिर चर सीजी का एक स्थिर संदर्भ से संदर्भित नहीं किया जा सकता है" मैं फंस रहा हूँ। कोई भी सहायताकाफी प्रशंसनीय होगी। धन्यवाद। मुझे क्षमा करें अगर मैं पर्याप्त नहीं हूं पहली बार एक सवाल पोस्ट! : D
यह विफल रहता है क्योंकि आप अपने cg फ़ील्ड को संदर्भित कर रहे हैं < कोड> विद्यार्थी वर्ग नेस्टेड स्टैटिक क्लास के भीतर से testcomparable - जो आपके विद्यार्थी वर्ग के उदाहरण फ़ील्ड नहीं देख सकता है। orderbycg काम करता है क्योंकि यह ऑब्जेक्ट obj1 और obj2 पर cg फ़ील्ड्स का संदर्भ देता है।
Comments
Post a Comment