मैं जावा क्लास में एक छात्र हूं और आज जावा के बारे में कुछ सीखा है जो मेरे गियर्स को बदल देता है। जब मैंने शिक्षक से पूछा कि क्यों और क्यों, वह व्यवहार के बारे में निश्चित नहीं था। क्या कोई समझा सकता है कि निम्नलिखित उदाहरण क्यों काम करता है?जावा स्कोप: एक विधि के अंदर तुरंत ऑब्जेक्ट लौटा रहा है - क्या यह खतरनाक है?
class Example {
public int ex_val;
public Example (int a) {
this.ex_val = a;
}
public int getExVal() {
return this.ex_val;
}
}
अगर मैं किसी अन्य वर्ग और "वापसी" वस्तु की एक विधि के अंदर "उदाहरण" का एक उदाहरण बनाने के लिए थे, इसे सफलतापूर्वक इसे से बाहर कूद मूल गुंजाइश है और बाद में इस्तेमाल किया जा कर सकते हैं।
class ParentObject {
// Instance Variables
public Example a;
public ParentObject (int number) {
// Initialize instance variable object from out-of-scope instantiation
this.a = genExample(number);
// Verify scope creep
System.out.println(this.a.getExVal());
}
public Example genExample (int a) {
return new Example(a);
}
}
यह काम करता है, लेकिन क्या यह व्यवहार स्थिर है? क्या मैं इस पर भरोसा कर सकता हूं? क्या कचरा कलेक्टर कॉलिंग फ़ंक्शन के एक विधि और असाइनमेंट स्टेटमेंट के रिटर्न स्टेटमेंट के बीच कूद सकता है? क्या मैं अपने ओएस के जेवीएम के संस्करण के आधार पर विफलता का जोखिम चला रहा हूं? यह आसान कार्यक्षमता की तरह लगता है अगर इसे भरोसा किया जा सकता है।
यह नहीं कह सकता कि मैं समझ रहा हूं कि आप यहां क्या पूछ रहे हैं। "इसका मूल दायरा से बाहर निकलने" का क्या मतलब है? क्या आप एक सी ++ प्रोग्रामर हैं? –
आप जीवनकाल के साथ गुंजाइश कर रहे हैं। चर के रूप में, वस्तुओं के लिए आजीवन के रूप में गुंजाइश के बारे में सोचो। –