मुझे लगता है कि उनका कहना है कि जावा भाषा के नियमों से जावा के बराबर सम्मिलित करता है लायक है "इस।" जब यह नोटिस करता है कि आप एक स्पष्ट उदाहरण के बिना उदाहरण विधियों या उदाहरण फ़ील्ड तक पहुंच रहे हैं। बेशक, संकलक जानता है कि यह केवल एक उदाहरण विधि है, जो एक "इस" चर है, स्थिर तरीकों नहीं है के रूप में भीतर से ऐसा कर सकते हैं।
जिसका मतलब है कि जब आप एक उदाहरण विधि निम्नलिखित में हैं बराबर हैं:
instanceMethod();
this.instanceMethod();
और ये भी बराबर हैं: "। इस"
... = instanceField;
... = this.instanceField;
संकलक प्रभावी रूप से डालने है जब आप एक विशिष्ट उदाहरण की आपूर्ति नहीं करते हैं।
यह (यमक इरादा) "जादू की मदद" संकलक novices को भ्रमित कर सकते द्वारा की बिट: इसका मतलब है कि उदाहरण के कॉल और स्थिर कॉल कभी कभी एक ही वाक्य रचना है, जबकि वास्तविकता में विभिन्न प्रकार और अंतर्निहित तंत्र की कॉल कर रहे हैं दिखाई देते हैं।
उदाहरण विधि कॉल कभी कभी एक विधि मंगलाचरण या क्योंकि बहुरूपता समर्थन आभासी तरीकों में से व्यवहार के प्रेषण के रूप में भेजा जाता है; भेजने व्यवहार के लिए कि क्या आप उपयोग का सुस्पष्ट वस्तु दृष्टान्त लिखा या संकलक एक डाला परवाह किए बिना होता है "इस।"।
स्थिर विधि कॉल तंत्र एक गैर OOP भाषा में एक समारोह कॉल की तरह सरल, है।
व्यक्तिगत रूप से, मुझे लगता है कि त्रुटि संदेश भ्रामक है, यह पढ़ सकता है "गैर स्थैतिक विधि एक स्थिर संदर्भ से संदर्भित नहीं किया जा सकता एक स्पष्ट वस्तु दृष्टान्त निर्दिष्ट किए बिना"।
संकलक इस बारे में शिकायत कर रहा है कि यह केवल मानक "यह" नहीं डाल सकता है। क्योंकि यह उदाहरण विधियों के भीतर करता है, क्योंकि यह कोड एक स्थिर विधि के भीतर है; हालांकि, शायद लेखक इस आमंत्रण — के लिए ब्याज के उदाहरण की आपूर्ति करना भूल गए हैं, एक उदाहरण संभवतः स्थैतिक विधि को पैरामीटर के रूप में प्रदान किया गया है, या इस स्थिर विधि के भीतर बनाया गया है।
संक्षेप में, आप निश्चित रूप से एक स्थिर विधि के भीतर से उदाहरण विधियों को कॉल कर सकते हैं, आपको केवल आमंत्रण के लिए एक स्पष्ट इंस्टेंस ऑब्जेक्ट होना और निर्दिष्ट करना होगा।
"चूंकि आपने कोई ऑब्जेक्ट नहीं बनाया है, इसलिए गैर स्थैतिक विधि अभी तक मौजूद नहीं है।" - बहुत बहुत धन्यवाद। मुझे इसके बारे में सोचना चाहिए था। – DragonBorn
विधि स्वयं मौजूद है। कहीं भी लोड कक्षा परिभाषा में। तो जवाब गलत है :) –
@Vladimir, ठीक है अगर आप picky होना चाहते हैं। :) "वर्तमान संदर्भ में मौजूद नहीं है" :) –