में बदल नहीं रहा है मेरे पास एक परिदृश्य है जहां मैं Boolean
ऑब्जेक्ट सेट करना चाहता हूं और उसके बाद विधि में बाद में एक निर्माता में booleanValue()
का उपयोग करना चाहता हूं। हालांकि, जिस दायरे में वस्तु सेट की गई है वह अलग है। यह विधि द्वारा बुलाए गए तरीके में सेट किया गया है जिसमें ऑब्जेक्ट पहली बार तत्काल है। जावा कैसे प्राचीन और ऑब्जेक्ट तर्कों को पार करता है और ऑनलाइन पोस्ट (जैसे this) को पढ़ने के बारे में मेरी समझ के आधार पर, जब कोई ऑब्जेक्ट किसी विधि में पारित होता है, तो इसकी गुण संदर्भ द्वारा पारित की जाती है और बुलाए गए विधि में किसी भी बदलाव को प्रतिबिंबित किया जाना चाहिए कॉल विधि के बाद कॉलिंग विधि निष्पादन समाप्त हो गया है। हालांकि मैं देख रहा हूं कि जब बुलाया गया तरीका समाप्त हो जाता है, तो कॉलिंग विधि में कोई भी परिवर्तन प्रभावी नहीं होता है। ,जावा बूलियन मान विधि
private CustomObject1 callingMethod(){
Boolean b = Boolean.TRUE;
List<CustomObject2> list = this.calledMethod(b);
//Create CustomObject1 with b.booleanValue() as one of the arguments in the constructor
}
private List<CustomObject2> calledMethod(Boolean b){
...
...
if(condition){
b = Boolean.FALSE;
}
...
...
}
बार कोड CustomObject
निर्माण b.booleanValue()
हमेशा सच है पहुँचता है के द्वारा भले ही callingMethod()
में अगर-वाक्य सही है और Boolean
गलत पर सेट है:
यहाँ मेरी परिदृश्य का एक स्नैपशॉट है उस विधि में।
मैं boolean
होने के लिए कॉलिंग विधि के रिटर्न प्रकार को बदलने में अनिच्छुक हूं क्योंकि इसे इस विधि को कॉल करने वाले कोड के अन्य बिट्स में बदलाव की आवश्यकता होगी। वर्तमान में उन्हें केवल हस्ताक्षर परिवर्तन की आवश्यकता है, लेकिन रिटर्न प्रकार परिवर्तन के लिए अधिक काम की आवश्यकता होगी क्योंकि तर्क को बनाए रखने की आवश्यकता है (यानी एक सूची पॉप्युलेट करना और फिर इसके साथ कुछ करना)
वह लिंक वास्तव में अंतर्दृष्टिपूर्ण था।मैं किसी भी जावा प्रोग्रामर को प्रोत्साहित करता हूं जो इसे पढ़ने के लिए देखता है। –