दिलचस्प पोस्ट
rescue_from ActionController :: रेलिंग 4 रेलवे में त्रुटि ओएस एक्स पर पायथन की डिफ़ॉल्ट संस्करण को 3.3 कैसे सेट करें? मैं जेएस को आवेदन रूट के बारे में कैसे जान सकता हूं? एसक्यूएल सर्वर में पासवर्ड भंडारण IOS 5.1 के साथ वरीयताओं / सेटिंग्स कैसे खोलें? जावास्क्रिप्ट प्रोटोटाइप ऑब्जेक्ट का उपयोग करते समय इवेंट विधियों में "यह" कीवर्ड अगले / पिछले तत्व जावास्क्रिप्ट का उपयोग करें किसी दिए गए वर्ग के पहले तत्व का चयन करने के लिए सीएसएस चयनकर्ता दो स्टैक का प्रयोग करके कतार कैसे कार्यान्वित करें? कैसे प्रोग्राम करने के लिए iPhone म्यूट स्विच समझ? Fs.readFile से डेटा प्राप्त करें दो जेवीएम के बीच साझा मेमोरी वास्तविक छवि डाउनलोड करते समय छवि को लोड करने के तरीके को कैसे देखें Http Servlet अनुरोध POST बॉडी से परामर्शी के बाद इसे एक बार पढ़ा गया जीएचसीआई में मल्टी-लाइन कमांड

हम एक स्थिर विधि में 'इस' कीवर्ड का उपयोग क्यों नहीं कर सकते?

class Sub { static int y; public static void foo() { this.y = 10; } } 

मैं समझता हूं कि this विधि को लागू करने वाले ऑब्जेक्ट का प्रतिनिधित्व करता है और यह स्थिर तरीके किसी भी वस्तु के लिए बाध्य नहीं हैं। लेकिन ऊपर वर्णित मामले में, चर y भी स्थिर है।

अगर हम क्लास ऑब्जेक्ट पर स्टैटिक मेथड लागू कर सकते हैं, तो हम स्टैटिक तरीके से कक्षा के स्थिर चर को सेट करने की अनुमति क्यों नहीं दे सकते।

इस अतिरिक्त बाधा का उद्देश्य क्या है?

वेब के समाधान से एकत्रित समाधान "हम एक स्थिर विधि में 'इस' कीवर्ड का उपयोग क्यों नहीं कर सकते?"

क्योंकि this वस्तु उदाहरण को संदर्भित करता है एक स्थिर विधि के कॉल में कोई वस्तु उदाहरण नहीं है। लेकिन निश्चित रूप से आप अपने स्थैतिक फ़ील्ड (केवल स्थिर वाले!) तक पहुंच सकते हैं। महज प्रयोग करें

 class Sub { static int y; public static void foo() { y = 10; } } 

यदि आप यह सुनिश्चित करना चाहते हैं कि आप स्थिर फ़ील्ड y प्राप्त करें और एक ही नाम के साथ कुछ स्थानीय चर नहीं है, तो निर्दिष्ट करने के लिए क्लास का नाम लिखें:

 class Sub { static int y; public static void foo(int y) { Sub.y = y; } } 

this ऑब्जेक्ट Sub इस उदाहरण का जिक्र है जैसा कि विधि static , वहाँ Sub का एक उदाहरण नहीं है

मुख्य कारण है कि हम "इस" को स्थिर विधि संदर्भ में नहीं उपयोग कर सकते हैं: –

यह: – "यह" वर्तमान कक्षा ऑब्जेक्ट का मतलब है, इसलिए यह स्पष्ट है कि "यह" केवल एक बार तस्वीर में आ गया है, जब हम उस कक्षा के एक ऑब्जेक्ट को बनाने का इरादा रखते थे।

स्थिर विधि: – स्थिर विधि का उपयोग करने के लिए वस्तु बनाने की कोई आवश्यकता नहीं है। जिसका मतलब है "उदाहरण" या वस्तु निर्माण जावा नियम के अनुसार "स्थिर" के साथ कोई अर्थ नहीं है

तो विरोधाभास होगा, यदि हम दोनों एक साथ (स्थैतिक और इस) का उपयोग करते हैं यही कारण है कि हम स्थिर तरीके से "इस" का उपयोग नहीं कर सकते।

अपना कोड काम करने के लिए इसे इस प्रकार लिखें:

 class Sub { static int y; public static void foo() { Sub.y = 10; } } 

आप स्थिर तरीकों में स्थिर फ़ील्ड सेट कर सकते हैं, लेकिन आपको this पर स्थिर विधि में ऐक्सेस नहीं है क्योंकि this ऑब्जेक्ट के वर्तमान इंस्टेंस को दर्शाता है, और एक स्थिर विधि में आपके पास कोई इन्सान नहीं है।

इसका अर्थ है "यह" ऑब्जेक्ट लेकिन कोई नहीं है आपके मामले में आप @tibtof सुझाव के रूप में वर्ग नाम का उपयोग कर सकते हैं।

कीवर्ड "यह" उस ऑब्जेक्ट को संदर्भित करता है जिसे आप ऑपरेशन कर रहे हैं। आपके मामले में यह किसी भी गैर-स्थिर विधियों या कन्स्ट्रक्टर के अंदर (यदि आपके पास एक है और यदि आप उसमें "यह" प्रयोग करते हैं), तो "यह" वर्ग उप के उस विशिष्ट उदाहरण को संदर्भित करता है। इसलिए यह केवल तभी लागू होता है जब ऑब्जेक्ट बनाया जाता है लेकिन एक वर्ग के स्थिर संदर्भ में कुछ भी, आप उस वस्तु को भी बिना बनाने के उपयोग कर सकते हैं, क्योंकि यह कक्षा लोड हो रहा है। "यह" तभी हल किया जब वस्तु बनाई गई हो (आप भी उस ऑब्जेक्ट के लिए गतिशील कह सकते हैं)। तो "यह" स्थिर संदर्भ में समझ में आता है आशा करता हूँ की ये काम करेगा। भगवान भला करे।

"यह" कीवर्ड केवल तभी लागू होता है जहां एक ऑब्जेक्ट का एक उदाहरण बनाया जाता है। और स्थिर विधि में कोई भी उदाहरण नहीं बनाया गया है क्योंकि स्थिर विधि वर्ग क्षेत्र से संबंधित है।