प्रकार पूर्णांक है कि स्थिर कारखाने विधि valueOf फोन के दो संदर्भों पर विचार करें जिन्हें आप नीचे देख इसे का उपयोग जावा में अपरिवर्तनीय वस्तुओं की तुलना करना ठीक है == बराबर विधि का उपयोग करने के बजाय == का उपयोग करके ए और बी की तुलना करना ठीक है। मैं अनुमान लगा रहा हूं कि valueOf विधि यह सुनिश्चित करती है कि मान 10 के साथ इंटीजर का केवल एक उदाहरण बनाया गया है और इस उदाहरण का संदर्भ मूल्य 10 के साथ बनाए गए प्रत्येक इंटीजर के लिए वापस किया जाता है।बजाय बराबर होती है
सामान्यतः, तुलना करना ठीक है एक अपरिवर्तनीय वर्ग के दो संदर्भ जो समान स्थिर फैक्ट्री विधि में कॉल का उपयोग करके समान रूप से == का उपयोग करके बनाए जाते हैं?
संपादित करें: इंटीजर वर्ग का उपयोग उदाहरण के रूप में किया गया था। मुझे पता है कि 127 तक की इंटर्स सच हो जाएंगी यदि उनकी तुलना == का उपयोग करके की जाती है। मुझे यह जानने की ज़रूरत है कि जब मैं अपनी खुद की अपरिवर्तनीय कक्षा बनाउंगा, तो एक विधि बनाने के साथ MyImmutable कहें() जो सुनिश्चित करेगा कि कोई डुप्लिकेट MyImutable ऑब्जेक्ट्स नहीं बनाए जाते हैं, तो यह ठीक होगा अगर मैं 2 विधि बनाने के द्वारा बनाए गए MyImutable संदर्भों की तुलना करता हूं बराबर के बजाय == का उपयोग कर।
कृपया पढ़ें [यह] (http: //www.javabeat।नेट/क्यूना/13-बीच-अंतर-अंतर-बराबर-और-/0) –
अपरिवर्तनीयता का तात्पर्य है कि वे बदल नहीं सकते हैं। यह सुनिश्चित करने के लिए कि समान मान पैरामीटर के लिए समान मान वापस आते हैं, कैशिंग (कोई 'नया') के साथ विशेष देखभाल की आवश्यकता है। –
आप उन प्रकारों के बराबर के बराबर '==' का उपयोग कर सकते हैं जहां बराबर ओवरराइड नहीं किया गया है। चूंकि यह भविष्य में बदल सकता है, बराबर लगभग हमेशा बेहतर होता है। एकमात्र बार मैं कहूंगा कि '==' बेहतर है 'एनम' जैसे प्रकारों के साथ जो 'शून्य' हो सकता है और '==' इस मामले में कोड को सरल बनाता है। –