मुझे SO में एक पोस्ट विधि मिली है जो एक आवृत्ति विधि से स्थिर क्षेत्र में लिखने से रोकने के लिए आवश्यक कोड परिवर्तन पर चर्चा कर रही है लेकिन ऐसा करने का अच्छा अभ्यास क्यों नहीं है? जावा डिजाइनर ने तब क्यों अनुमति दी? दूसरे शब्दों में संकलक एक त्रुटि क्यों नहीं फेंकता है जब कोई ऐसा करने का प्रयास करता है?जावा में उदाहरण विधि से स्थैतिक क्षेत्र को लिखना अच्छा क्यों नहीं है?
उत्तर
'findbugz' प्रलेखन के शब्दों में:
इस उदाहरण विधि एक स्थिर क्षेत्र के लिए लिखता है। यदि कई उदाहरणों का उपयोग किया जा रहा है, और आम तौर पर खराब अभ्यास किया जा रहा है तो यह सही हो सकता है।
जो कहना है कि यह हमेशा गलत नहीं होता है, बस यह कुछ ऐसा होता है जो अक्सर त्रुटियों का स्रोत होता है। स्थैतिक क्षेत्रों में हेरफेर करने वाली इंस्टेंस ऑब्जेक्ट्स उपयोगी वस्तुओं के आलसी प्रारंभिकरण के लिए उपयोगी हो सकती हैं, इसलिए यह हमेशा गलत नहीं होता है, लेकिन इसे सही करना मुश्किल हो सकता है (विशेष रूप से यदि एक ही समय में एकाधिक थ्रेड चल रहे हों)।
उपरोक्त के अतिरिक्त, देखने के एक दस्तावेज के बिंदु से यह आसान किसी को यह एक उदाहरण क्षेत्र है ग्रहण करने के लिए है, यदि आप फार्म का उपयोग करें:
someField = null
या
myObj.someField = null
फॉर्म का उपयोग
myClass.someField = null
इसे स्पष्ट बनाता है और खोजबग चेतावनी को रोकता है (जाहिर है, मैंने परीक्षण नहीं किया है)। नोट, जो वर्णित बहु-थ्रेडिंग समस्याओं को नहीं रोकेगा।
यह उपयोगी हो सकता है, उदाहरण के लिए यदि आपको एक ऐसा एप्लिकेशन मिला जो चींटियों का प्रबंधन करता है और आपको चींटी कक्षा से बनाए गए चींटियों की कुल संख्या में प्रवेश करने में सक्षम होना चाहिए। यह एक स्थैतिक विधि को लिखकर किया जा सकता है जो हर बार जब आप एक नई चींटी बनाते हैं तो स्थिर विधि addAnt() में लिखते हैं, चींटियों की कुल संख्या का ट्रैक रखता है;
- 1. जावा में कोई स्थानीय स्थैतिक चर क्यों नहीं है?
- 2. 'उदाहरण विधि से स्थैतिक क्षेत्र में लिखने' को ठीक करने का सबसे अच्छा तरीका क्या है? Findbugs चेतावनी?
- 3. विधि की कक्षा के उदाहरण के भीतर स्थैतिक रूप से स्थैतिक विधि को कॉल करना बेहतर क्यों है?
- 4. स्थैतिक अंतिम क्षेत्र, स्थैतिक क्षेत्र और प्रदर्शन
- 5. स्थैतिक क्षेत्र को स्थिर तरीके से क्यों पहुंचाया जाना चाहिए?
- 6. स्थैतिक विधि गैर स्थैतिक से तेज है?
- 7. स्थैतिक क्षेत्र प्रारंभिक स्थिरता से पहले क्यों होता है?
- 8. गैर-स्थैतिक विधि के भीतर स्थिर उदाहरण
- 9. पायथन विधि लुकअप, स्थैतिक बनाम उदाहरण
- 10. PHP में, मैं एक स्थैतिक तरीके से गैर स्थैतिक विधि तक पहुंचने में सक्षम क्यों हूं?
- 11. सार्वजनिक स्थैतिक क्षेत्र का उपयोग, अच्छा प्रोग्रामिंग अभ्यास/तेज़?
- 12. क्यों BinaryString इंटीजर क्लास में एक उदाहरण विधि नहीं है?
- 13. स्थैतिक विधि इंटरफ़ेस विधि को कार्यान्वित नहीं कर सकता है, क्यों?
- 14. स्थैतिक विधि
- 15. क्यों एक अस्थिर पढ़ने और फ़ील्ड सदस्य को लिखना जावा में स्केलेबल नहीं है?
- 16. जावा - स्थैतिक फैक्ट्री विधि और स्विच स्टेटमेंट
- 17. सी # से VB.NET में कनवर्ट करना: स्थैतिक विधि क्यों दिखाई नहीं दे रही है?
- 18. विधि में घोषित स्थैतिक चर के कितने उदाहरण हैं?
- 19. "सार स्थैतिक" विधि - कैसे?
- 20. जावा - सार्वजनिक स्थैतिक शून्य मुख्य()
- 21. ERROR स्टेटिक विधि को शून्य उदाहरण की आवश्यकता होती है, गैर स्थैतिक विधि को गैर-शून्य उदाहरण
- 22. रूबी में जावा स्थैतिक विधि कैसी दिखती है?
- 23. सी # कंपाइलर: गैर-स्थैतिक संदर्भ में स्थैतिक विधि तक नहीं पहुंच सकता है
- 24. स्कैला सूची में आकार का क्षेत्र क्यों नहीं है?
- 25. जावा प्रतिबिंब का उपयोग कर स्थैतिक अंतिम क्षेत्र को बदल नहीं सकते?
- 26. जावा। उदाहरण के लिए विधि
- 27. जावा: गैर स्थैतिक घोंसला वाले वर्ग और उदाहरण। सुपरर()
- 28. स्थैतिक विधि
- 29. जावा स्थैतिक विधि घोषणा में वर्तमान वर्ग का उपयोग
- 30. क्यों की जरूरत नहीं वर्ग के आयात किया जाता है जब उदाहरण पर विधि (जावा)
इस कोड में समवर्ती रूप से चलने वाले एकाधिक धागे कैसे चलते हैं इसे खराब बनाते हैं? मेरा सवाल वास्तव में इसका जवाब देना था। क्या हमारे पास क्षेत्र के कई उदाहरण बनाने की संभावना है? – Inquisitive
अभी भी केवल एक फ़ील्ड है, लेकिन यदि उनमें से दो एक ही समय में लिखने का प्रयास करते हैं, तो आप दो ऑब्जेक्ट्स बनने और फ़ील्ड बदलने के साथ समाप्त हो सकते हैं, जबकि आप शायद ऑब्जेक्ट की केवल एक प्रति मौजूद होना चाहते थे । इससे कुछ मामलों में गंभीर समस्याएं हो सकती हैं, क्योंकि मालिक ऑब्जेक्ट के विभिन्न उदाहरण विभिन्न साझा वस्तुओं का उपयोग कर सकते हैं। आपको किसी भी कोड के चारों ओर एक सिंक्रनाइज़ (this.getClass()) ब्लॉक डालना होगा जो स्थिर क्षेत्र को यह सुनिश्चित करने के लिए बदल सकता है कि यह काम करता है। – Jules