मेरे पास मेरे कोड में यह है
Thread.currentThread().sleep(x);
ग्रहण मुझे स्थैतिक का उपयोग करने के लिए कहता है
Thread.sleep(x);
इसके बजाय, क्यों? क्या अंतर है, क्या इन 2 विधियों के बीच कार्यक्षमता में कुछ अंतर है?
मेरे पास मेरे कोड में यह है
Thread.currentThread().sleep(x);
ग्रहण मुझे स्थैतिक का उपयोग करने के लिए कहता है
Thread.sleep(x);
इसके बजाय, क्यों? क्या अंतर है, क्या इन 2 विधियों के बीच कार्यक्षमता में कुछ अंतर है?
जवाबों:
केवल एक विधि है, दो नहीं, और यह स्थिर है। हालांकि आप एक उदाहरण संदर्भ के माध्यम से एक स्थिर विधि कह सकते हैं, यह अच्छी शैली नहीं है। यह इंगित करता है कि प्रोग्रामर सोचता है कि वह एक आवृत्ति विधि कह रहा है। एक भ्रमित प्रोग्रामर सोच सकता है कि वह इस तरह से सोने के लिए एक और धागा (वर्तमान में नहीं) पैदा कर सकता है, जब वह ऐसा नहीं करता है।
आपके कोड की दोनों पंक्तियाँ समान कार्य करती हैं लेकिन दूसरी बेहतर शैली है।
जावा में, नींद एक स्थिर विधि है। आपके दोनों उदाहरण बिल्कुल वैसा ही काम करते हैं, लेकिन पूर्व संस्करण भ्रमित कर रहा है क्योंकि ऐसा लगता है कि यह किसी विशिष्ट वस्तु पर एक विधि कह रहा है लेकिन ऐसा बिल्कुल नहीं है। आपके उदाहरण में यह ज्यादा मायने नहीं रखेगा, लेकिन यदि आपके पास निम्नलिखित है तो यह अधिक खतरनाक है:
someOtherThread.sleep(x);
इस बार ऐसा लग रहा है कि आप सोने के लिए कोई और धागा बता रहे हैं, लेकिन वास्तव में आप सोने के लिए मौजूदा धागा लगा रहे हैं। इस प्रकार की गलती से बचने का तरीका यह है कि किसी विशिष्ट वस्तु के बजाय हमेशा कक्षा का उपयोग करके स्थैतिक तरीकों को कॉल करें।
दो विधि कॉल व्यवहार में समान हैं क्योंकि वे एक ही विधि का आह्वान करते हैं लेकिन स्थिर क्षेत्रों तक पहुँचने के लिए उदाहरण के बजाय वर्ग नाम ( थ्रेड इस मामले में) का उपयोग करके इस स्थैतिक-नेस को स्पष्ट करता है। इसी कारण यह चेतावनी उत्पन्न होती है।
लेकिन यह देखते हुए कि अधिकांश आईडीई में स्थिर क्षेत्रों और विधियों को एक विशेष तरीके से दिखाया गया है (उदाहरण के लिए ग्रहण और IntelliJ IDEA में इटैलिक फ़ॉन्ट में), क्या यह चेतावनी अभी भी आवश्यक है? शायद जावा के शुरुआती दिनों में उतना आवश्यक नहीं था जितना कि सरल संपादक उपयोग में थे।
Thread.currentThread().sleep(x);
या जिस तरह से ग्रहण कहता है कि Thread.sleep(x);
स्थैतिक संदर्भ की आवश्यकता है अगर यह आवश्यक है, तो हम इस नींद के साथ थोड़ी देर के लिए रोकते हैं।
एक वस्तु द्वारा निर्धारित स्थैतिक प्रतिमान, केवल उस विशेष वस्तु हीप प्रिंट जीवन चक्र को प्रभावित करता है, फिर से समग्र वस्तु जीवन चक्र के स्थैतिक को देखते हुए, यह कष्टप्रद नहीं है, यदि आवश्यक हो तो इसका उपयोग कोडिंग को आसान बनाने के लिए किया जा सकता है, लेकिन स्थिर पैर से सावधानीपूर्वक किया जा सकता है- प्रिंट को Class
उदाहरण के लिए (उदाहरण के लिए: - Class.forName(pkg.className)
) के नाम से जाना जाता है और स्मृति object
में कक्षा की रन-टाइम सिंगल प्रिंट कॉपी द्वारा किसी भी नाम से नहीं HEAP
।
ऑब्जेक्ट के फिर से उपयोग में कमजोर, फैंटम, मजबूत तरह के संदर्भों द्वारा पेशेवरों और विपक्षों का भी है ....
कोड प्रकृति द्वारा संकलित है। यह सिर्फ तरीका है कि हम इसे कैसे काम करते हैं और कार्य करते हैं।