मैं अभी कुछ कोड में आया हूं जो मुझे थोड़ा उलझन में डाल रहा है; वास्तव में 2 भिन्नताएं हैं जिन्हें मैं स्पष्ट करना चाहता हूं।क्या जावा में एक अंतिम अंतिम चर दूसरी तरफ अंतिम रहता है?
उदाहरण 1:
public String getFilepath(){
final File file = new File(this.folder, this.filename);
return file.getAbsolutePath();
}
क्या file
"final
" घोषित करने के उद्देश्य हो सकता है? चूंकि जावा प्राइमेटिव मान द्वारा पारित किए जाते हैं, और getAbsolutePath()
सिर्फ String
लौटा रहा है, तो दूसरी तरफ (कॉलिंग विधि) चर final
नहीं होगा, है ना? और चूंकि file
चर केवल इन 2 लाइनों के दायरे में मौजूद है, इसलिए मैं वास्तव में final
कीवर्ड का कोई उद्देश्य नहीं देख सकता। क्या मुझे कुछ याद आ रही है? कोई भी ऐसा करने का कारण देखता है?
उदाहरण 2:
public String getFilepath(){
final File file = new File(this.folder, this.filename);
return file;
}
यहाँ के बाद से वास्तविक वस्तु लौटे जा रहा है ... इसका मतलब यह file
चर निरंतर हो जाएगा करता है/final
दूसरे पक्ष पर ...? यह समझ में नहीं आता है।
सामान्यतः, मुझे लगता है कि आप एक चर, के बिना पहुंच प्रकार पास करते हैं। जैसा कि, public
के साथ एक फ़ंक्शन में private
वैरिएबल हो सकता है जो फ़ंक्शन देता है - लेकिन फ़ंक्शन को कॉल करके इसे प्राप्त करने वाले चर को एक एक्सेस संशोधक निर्दिष्ट करना होता है। तो यदि यह public
निर्दिष्ट करता है, तो लौटा चर उस दायरे में public
होगा। यदि यह private
निर्दिष्ट करता है, तो उस दायरे में लौटा चर private
होगा। final
के साथ कोई अंतर है? एक परिवर्तनीय कुछ "स्थिरता" है जिसे पारित किया जा सकता है? जावा के बारे में मुझे क्या पता है, यह मुझे असंभव के रूप में मारता है।
या क्या मैं पूरी तरह से बिंदु खो रहा हूं और उपरोक्त कोड में final
कीवर्ड का कोई अन्य उद्देश्य है?
संपादित करें:
मैं मूल डेवलपर जो कोड लिखा था के साथ वापस जाँच की, और उन्होंने कहा कि वह केवल में है क्योंकि वह मूल रूप से सोचा था विधि एक बहुत लंबे समय तक किया जाएगा final
कीवर्ड डाल दिया और सुनिश्चित करना चाहते थे कि फाइल लगातार स्थिर रहे। उन्होंने यह भी कहा कि वह आम तौर पर वेरिएबल घोषित करते हैं जिन्हें final
के रूप में नहीं बदला जाना चाहिए, बोर्ड के नियम के रूप में और सिद्धांत पर आधारित - एक बिंदु है कि नीचे दिए गए दोनों उत्तरों का उल्लेख किया गया है। तो ऐसा लगता है कि मैं मानक कारणों के लिए शामिल एक साधारण अतिरिक्त कीवर्ड में बहुत अधिक पढ़ रहा था। सबको धन्यवाद!
ऐसे मामले हैं जहां अंतिम उपयोग करने से निश्चित रूप से आपको बेहतर प्रदर्शन मिल जाएगा, उदाहरण के लिए http://en.wikipedia.org/wiki/Memoization का उपयोग करना। – Stuart
@ स्टुअर्ट, आप उलझन में हैं। ज्ञापन अनुकूलन 'अंतिम' कीवर्ड से संबंधित नहीं हैं (हालांकि वे जावा में संयोजन के रूप में उपयोग किए जा सकते हैं, 'अंतिम' कीवर्ड मेमोआज़ेशन पैटर्न के अंतर्निहित गति लाभ प्रदान नहीं करता है)। – BrainSlugs83
ओपी का सवाल कभी जवाब नहीं दिया गया था। क्या एक p̶a̶s̶s̶e̶d̶ दूसरी तरफ जावा रहने के फाइनल में अंतिम चर लौटाता है? –