से गुजरती ++ मैं निम्नलिखित में उलझन में हूँ:
C++ में हम एक पैरामीटर एक समारोह के संदर्भ द्वारा पारित कर सकते हैं (एक सूचक या संदर्भ चर के रूप में यह घोषित होने के बाद) और हम अंदर इसे संशोधित करता है, तो फ़ंक्शन, फ़ंक्शन लौटने पर कॉलर पर परिवर्तन प्रतिबिंबित होते हैं।
यह जावा में नहीं हो रहा है और मुझे यकीन नहीं है कि मैं क्यों समझता हूं।जावा बनाम सी संदर्भ
उदा। इस एक वस्तु एक्स से एक विधि
public boolean aMethod(int id, myClass aClass)
{
//do some logic
aClass = new MyClass();
//configure argument object aClass
return true;
}
में कोड बुला है:
//some code processing
myClass obj = null;
if(X.aMethod(2,obj))
{
obj.methodA();//start using the object
}
मैं सी में इसका इस्तेमाल ++, यानी एक परिणाम सूचित करता है कि कि समारोह पैरामीटर का उपयोग किया जा सकता है वापस जाने के लिए, लेकिन जावा में यह काम नहीं करता है।
मैं if (X.aMethod (2, obj)) शाखा दर्ज करता हूं लेकिन obj शून्य है। यह शून्य क्यों है?
क्या मैंने विधि विधि के अंदर नए का उपयोग करके ढेर से स्मृति पता असाइन नहीं किया है (int id, myClass aClass)? क्या मैं समारोह में ओबीजे का "पता" पास नहीं कर रहा हूं? मैं ओबीजे को सही ढंग से निर्मित और कॉलिंग कोड में प्रयोग करने योग्य होने की उम्मीद कर रहा था। क्या मैंने जावा में स्मृति से संबंधित कुछ गलत समझा है?
के संभावित डुप्लिकेट [? क्या संदर्भ द्वारा पारित के बीच अंतर है और संदर्भ से बुलाते] "जावा दर्रे तक मूल्य, Dammit है" (http://stackoverflow.com/questions/3660180/what-is-the-difference-between-pass-by-reference-and-call-by-reference) –