2012-05-20 16 views
6

में अंतिम स्थानीय चर का दायरा विधि-स्थानीय आंतरिक वर्ग स्थानीय चरों तक नहीं पहुंच सकता है क्योंकि विधि-स्थानीय आंतरिक वर्ग का उदाहरण विधि खत्म होने के बाद भी जीवित हो सकता है। लेकिन स्थानीय विधि खत्म होने के बाद स्थानीय चर गायब हो जाएंगे। मैंने सीखा कि विधि-स्थानीय आंतरिक वर्ग अंतिम स्थानीय चर का उपयोग कर सकता है, क्या इसका मतलब यह है कि विधि खत्म होने के बाद भी अंतिम स्थानीय चर जीवित है?जावा

+3

अपना उदाहरण पोस्ट करने की देखभाल करें ताकि कोई भी आपके प्रश्न को गलती से गलत समझ न सके? हम कोडर हैं, और जावा कोड यह बहुत अधिक स्पष्टता देगा। – jmort253

+0

मुझे लगता है कि यह आपका मतलब है, और _no_ यह काम नहीं करता है। http://ideone.com/LNg9w –

+0

@HunterMcMillen प्रश्न विधि-स्थानीय वर्गों के बारे में है, अन्य तरीकों से नहीं। – Jeffrey

उत्तर

7

क्रमबद्ध करें। जावा अज्ञात आंतरिक वर्ग "बंद" की तरह कार्य करते हैं, यानी, वे वर्तमान स्थानीय राज्य के आस-पास "बंद" होते हैं। हालांकि, जावा केवल इन वर्गों को अंतिम चर के चारों ओर बंद करने देता है। यदि ऐसा नहीं होता है, तो चर का स्थानीय राज्य बदल सकता है, लेकिन आंतरिक वर्ग में आयोजित संस्करण नहीं होगा, इसलिए यह "पुरानी तारीख" उदाहरण तक पहुंच जाएगा। यह एक प्रोग्रामर को भ्रमित कर सकता है।

इसके बजाए, जावा की आवश्यकता है कि आवृत्ति को विधियों के माध्यम से उदाहरण के माध्यम से संभाला जाए, परिवर्तनीय पुन: असाइनमेंट नहीं। यह बेहतर स्पष्टता की ओर जाता है और सरल डीबगिंग के लिए अनुमति देता है। जावा ऐसा करने के बारे में अधिक जानकारी के लिए, this answer देखें।

चूंकि वर्ग अभी भी चर के संदर्भ में है, इसलिए आपके प्रश्न का उत्तर हाँ है, तब तक यह कवर कचरा नहीं होगा जब तक कि आंतरिक वर्ग चर के स्वामित्व को छोड़ देता है।

+1

* "यह प्रोग्रामर को भ्रमित कर सकता है।" * - इस बिंदु पर अधिक, यह अब बंद होने की तरह नहीं होगा। आपके पास एक पहचानकर्ता नाम होगा जिसमें व्याख्यात्मक संदर्भ के आधार पर एक अलग-अलग बाध्यकारी हो। –

+0

@ स्टीफन मेला पर्याप्त, और एक अच्छा बिंदु। –

1

नहीं, ऐसा नहीं है। इसका मतलब है कि स्थानीय चर के प्रतिलिपि स्थानीय चर के उदाहरण में अभी भी जीवित है। 'फाइनल' सिर्फ यह सुनिश्चित करता है कि दो प्रतियां मूल्य में उलझन में नहीं आती हैं।