सी ++ में, यदि आपको 2 ऑब्जेक्ट्स संशोधित करने की आवश्यकता है, तो आप संदर्भ से गुजर सकते हैं। आप इसे जावा में कैसे पूरा करते हैं? मान लें कि 2 ऑब्जेक्ट्स प्राचीन प्रकार के हैं जैसे int।जावा में संदर्भ द्वारा उत्तीर्ण?
उत्तर
आप नहीं कर सकते। जावा चर के संदर्भ गुजरने का समर्थन नहीं करता है। सब कुछ मूल्य से गुजरता है।
बेशक, जब किसी ऑब्जेक्ट का संदर्भ मान द्वारा पारित किया जाता है, तो यह उसी ऑब्जेक्ट को इंगित करेगा, लेकिन यह संदर्भ द्वारा कॉल नहीं कर रहा है।
जेनिक्स का उपयोग करके आप एक पॉइंटर क्लास बना सकते हैं जो इसे कम से कम कुछ दर्दनाक बना देगा। आप ऑब्जेक्ट में पास करते हैं, इसकी वैल्यू प्रॉपर्टी बदलते हैं और जब फ़ंक्शन आपके ऑब्जेक्ट से निकलता है तो इसमें नया मान होगा।
MyPointerClass<int> PointerClass = new MyPointerClass<int>(5);
myFunction(PointerClass);
System.out.println(PointerClass.Value.toString());
// ...
void myFunction(myPointerClass<int> SomeValue)
{
SomeValue.Value = 10;
}
जावा संदर्भ द्वारा पारित नहीं है, लेकिन आप अभी भी उन संदर्भों से वस्तुओं (जो खुद मान द्वारा पारित कर रहे हैं) उत्परिवर्तित कर सकते हैं।
java.util.Arrays.fill(int[] arr, int val)
- भरता है एक दियाint
मूल्य के साथ एकint
सरणीjava.util.Collections.swap(List<?> list, int i, int j)
- स्वैप एक सूची के दो घटकों कोStringBuilder.ensureCapacity(int min)
- आत्म व्याख्यात्मक
आप देख सकते हैं, आप अभी भी वस्तुओं को संशोधित कर सकते हैं (यदि वे अपरिवर्तनीय नहीं हैं); आप किसी फ़ंक्शन में पास करके संदर्भ या प्राइमेटिव को संशोधित नहीं कर सकते हैं।
बेशक, आप उन्हें किसी ऑब्जेक्ट के क्षेत्र बना सकते हैं और उन ऑब्जेक्ट्स को चारों ओर ऑब्जेक्ट्स पास कर सकते हैं और उन्हें अपनी इच्छानुसार सेट कर सकते हैं। लेकिन यह अभी भी संदर्भ द्वारा पारित नहीं है।
उन्हें किसी ऑब्जेक्ट में लपेटें और फिर उस ऑब्जेक्ट को विधि के पैरामीटर के रूप में पास करें।
उदाहरण के लिए, निम्नलिखित सी ++ कोड:
bool divmod(double a, double b, double & dividend, double & remainder) {
if(b == 0) return false;
dividend = a/b;
remainder = a % b;
return true;
}
को जावा में लिखा जा सकता है:
class DivRem {
double dividend;
double remainder;
}
boolean divmod(double a, double b, DivRem c) {
if(b == 0) return false;
c.dividend = a/b;
c.remainder = a % b;
return true;
}
जावा में अधिक मुहावरेदार शैली बना सकते हैं और विधि से इस वस्तु लौटने के लिए होगा हालांकि पैरामीटर के रूप में इसे स्वीकार करने के बजाय:
class DivRem {
double dividend;
double remainder;
}
DivRem divmod(double a, double b) {
if(b == 0) throw new ArithmeticException("Divide by zero");
DivRem c = new DivRem();
c.dividend = a/b;
c.remainder = a % b;
return c;
}
- 1. संदर्भ द्वारा उत्तीर्ण करना नया चर बनाने से बचें?
- 2. संख्या में उत्तीर्ण, संख्या.प्रोटोटाइप.फॉर्मैट
- 3. फ़ंक्शन में उत्तीर्ण तर्क/पैरामीटर अभी भी संदर्भ/उपनाम
- 4. उत्तीर्ण मूल्य
- 5. मूल्य और संदर्भ द्वारा संदर्भ
- 6. एक जावा समारोह में एक सामान्य कक्षा उत्तीर्ण?
- 7. द्वारा संदर्भ-टू-स्थिरांक
- 8. जावा में परिपत्र संदर्भ
- 9. 'संदर्भ द्वारा पास पैरामीटर'?
- 10. उत्तीर्ण प्रमाण-पत्र
- 11. उलझन में, क्या जावा ऑब्जेक्ट संदर्भ पारित होने पर संदर्भ द्वारा मूल्य या कॉल द्वारा कॉल का उपयोग करता है?
- 12. सी में संदर्भ द्वारा एक सरणी पास?
- 13. जावास्क्रिप्ट में आईडी द्वारा संदर्भ एएसपी.NET नियंत्रण?
- 14. रिकर्सिव फ़ंक्शन में संदर्भ द्वारा PHP पास
- 15. सी के तहत संदर्भ द्वारा पॉइंटर तर्क पास?
- 16. क्यों मूल्य के बजाय कॉन्स्ट संदर्भ द्वारा पास?
- 17. जावा "स्वयं" (स्थिर) संदर्भ
- 18. जावा में आगे संदर्भ कहा जाता है?
- 19. संदर्भ द्वारा स्कैला कॉल कर सकते हैं?
- 20. जावा बनाम सी संदर्भ
- 21. उत्तीर्ण उदाहरण कोड की तलाश: निरंतरता!
- 22. PHP द्वारा संदर्भ या वापसी सरणी द्वारा पास?
- 23. एचक्यूएल या एसक्यूएल में इन क्लॉज में उत्तीर्ण सूची?
- 24. रैवल्यू संदर्भ द्वारा और अधिक कुशल द्वारा लौट रहा है?
- 25. क्या एरे द्वारा मूल्य पारित किया गया है या जावा में संदर्भ द्वारा पारित किया गया है?
- 26. जावा डेटा संरचना संदर्भ
- 27. स्प्रिंग जावा कॉन्फ़िगरेशन संदर्भ
- 28. जावा स्पष्ट संदर्भ कास्टिंग
- 29. जावा कानूनी अग्रेषण संदर्भ
- 30. जावा जेटेबल उपयोगकर्ता द्वारा
यह http://stackoverflow.com/questions/589919/doe का डुप्लिकेट है एस जावा-पास-संदर्भ द्वारा – Zxaos