एक आंतरिक वर्ग विधि के भीतर परिभाषित किया गया है, जब तक कि इन स्थानीय चर को final
चिह्नित नहीं किया जाता है। मैंने स्टैक ओवरफ्लो और जावा कोड खेत में अन्य पोस्टों को देखा है, लेकिन उनमें से कोई भी बिल्कुल जवाब देने वाला प्रतीत नहीं होता है सवाल यह है कि चरम चर को कैसे चिह्नित किया जाता है, आंतरिक वर्ग को विधि में स्थानीय चरों तक पहुंचने की अनुमति मिलती है।एक वैरिएबल को अंतिम रूप में चिह्नित करने से आंतरिक कक्षाओं तक पहुंचने की अनुमति मिलती है?
स्थानीय चर और स्थानीय चर जबकि दुर्गम अंतिम स्थानीय चर रहे हैं स्टैक पर जमा हो जाती है और जैसे ही विधि कॉल खत्म के रूप में ढेर अप पॉपअप है:
class MyOuter {
private String x = "Outer";
void fly(final int speed) {
final int e = 1;
class FlyingEquation {
public void seeOuter()
{
System.out.println("Outer x is " + x);
}
public void display()
{
System.out.println(e);// line 1
System.out.println(speed);// line 2
}
}
FlyingEquation f=new FlyingEquation();
f.seeOuter();
f.display();
}
public static void main(String args[])
{
MyOuter mo=new MyOuter();
mo.fly(5);
}
}
स्पष्टीकरण मैं इस पायामेमोरी के डेटा सेक्शन में संग्रहीत हैं, संभावित रूप से JVM
को विधि कॉल के अंत के बाद भी उन्हें एक्सेस करने की अनुमति देता है। data section of memory
कहां है? मुझे विश्वास है कि सभी स्थानीय चर अंतिम हैं या स्टैक पर संग्रहीत नहीं हैं। जब स्टैक से विधि हटा दी जाती है तो अंतिम चर इसके साथ हटा दिया जाएगा। क्या यह है कि अंतिम चर में मान ढेर में वस्तु के साथ संग्रहीत किया जाता है?
यह गैर-अंतिम फ़ील्ड का समर्थन नहीं करता है क्योंकि उन्हें विधि या कक्षा द्वारा बदला जा सकता है और यह समर्थित नहीं है क्योंकि वास्तविकता में दो अलग-अलग फ़ील्ड/चर हैं।
यह [एसओ लिंक] (http://stackoverflow.com/a/1299889/1168372) उपयोगी हो सकता है – Sujay
मैं एक जवाब जोड़ लिया है। उम्मीद है कि यह आपको –