제이온

[इफेक्टिव जावा] आइटम 4. इंस्टैंसिएशन को रोकने के लिए प्राइवेट कंस्ट्रक्टर का उपयोग करें

  • लेखन भाषा: कोरियाई
  • आधार देश: सभी देशcountry-flag
  • आईटी

रचना: 2024-04-28

रचना: 2024-04-28 13:38

कभी-कभी केवल स्थिर विधियों और स्थिर क्षेत्रों वाले वर्ग का उपयोग करना उपयोगी होता है।


उदाहरण के लिए, java.lang.Math, java.util.Arrays जैसे गणितीय संचालन या सरणी से संबंधित विधियों के संग्रह के लिए उपयोगिता वर्गों का उपयोग किया जा सकता है। या java.util.Collections की तरह किसी विशिष्ट इंटरफ़ेस को लागू करने वाली वस्तु बनाने के लिए स्थिर फ़ैक्टरी विधियों को एक साथ रखा जा सकता है।


इस प्रकार के उपयोगिता वर्गों को इंस्टेंस चर या विधियों की आवश्यकता नहीं होती है, इसलिए उन्हें कंस्ट्रक्टर की आवश्यकता नहीं होती है। हालाँकि, यदि आप कंस्ट्रक्टर को स्पष्ट रूप से परिभाषित नहीं करते हैं, तो कंपाइलर स्वचालित रूप से एक सार्वजनिक डिफ़ॉल्ट कंस्ट्रक्टर बनाता है। इसलिए उपयोगकर्ता यह नहीं बता सकता है कि यह कंस्ट्रक्टर स्वचालित रूप से बनाया गया है या नहीं।


इसे रोकने के लिए, कभी-कभी इसे एक सार वर्ग के रूप में बनाया जाता है, लेकिन एक सार वर्ग के साथ, आप इंस्टेंस को नहीं बना सकते हैं। ऐसा इसलिए है क्योंकि आप केवल एक सबक्लास बनाकर और उसे इंस्टेंस करके इसे इंस्टेंस कर सकते हैं।



इसलिए, उपयोगिता वर्ग के इंस्टेंस को रोकने के लिए, कंस्ट्रक्टर का एक्सेस मोड निजी होना चाहिए।



जैसा कि ऊपर दिखाया गया है, यदि डिफ़ॉल्ट कंस्ट्रक्टर का एक्सेस मोड निजी है, तो क्लास के बाहर से इसे एक्सेस नहीं किया जा सकता है। इसके अलावा, यदि कंस्ट्रक्टर को आंतरिक रूप से कॉल किया जाता है, तो यह एक अपवाद उत्पन्न करके इसे रोक देता है।


इस तरह के निजी कंस्ट्रक्टर का उपयोग करने वालों के लिए कंस्ट्रक्टर को समझना मुश्किल हो सकता है, इसलिए टिप्पणी जोड़ना अच्छा है। संदर्भ के लिए, यदि आप कंस्ट्रक्टर को निजी बनाते हैं, तो यह वंशानुक्रम को भी अक्षम कर देता है।


स्रोत

टिप्पणियाँ0

Node.js जूनियर भी बना सकते हैं framework level DIयह लेख Node.js सर्वर विकास में निर्भरता इंजेक्शन (DI) को लागू करने के तरीके के बारे में बताता है। यह बताता है कि TypeScript कंपाइलर के Reflect मेटाडेटा फ़ंक्शन का उपयोग करके DI को कैसे लागू किया जाए और संबंधित लाइब्रेरी का परिचय देता है।
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit

November 8, 2024

जेनेरिक का उपयोग करके अपरिवर्तनीय मान प्राप्त करनाटाइपस्क्रिप्ट 5.0 के नए कीवर्ड का उपयोग करके जेनेरिक में अपरिवर्तनीय मानों को आसानी से पास करने का तरीका बताया गया है। यह सरणी या लिटरल प्रकार के लिए भी उपयोग किया जा सकता है और इससे लाइब्रेरी विकास और उपयोगकर्ता अनुभव में सुधार होता है।
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit

October 30, 2024

[गैर-तकनीकी पृष्ठभूमि वाले, डेवलपर बनने का सफ़र] 17. नए डेवलपर का पोर्टफोलियो, कहाँ तक?नए डेवलपर के पोर्टफोलियो को बुनियादी CRUD फंक्शन के कार्यान्वयन और बाहरी API एकीकरण के अनुभव के इर्द-गिर्द बनाना अच्छा होता है।
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

April 3, 2024

टाइपस्क्रिप्ट (Typescript) का बहिष्कार? (फीचर रियल)2023 में प्रोग्रामिंग भाषाओं की रैंकिंग में 5वें स्थान पर रहने वाली टाइपस्क्रिप्ट के बहिष्कार के विवाद को संक्षेप में प्रस्तुत किया गया है। हम जावास्क्रिप्ट से इसके अंतर और हाल ही में ओपन सोर्स प्रोजेक्ट्स में इसके बहिष्कार की गतिविधियों पर विचार करेंगे।
렛플
렛플
렛플
렛플

February 20, 2024

क्या आप अभी भी फंक्शनल लाइब्रेरी का उपयोग कर रहे हैं?फंक्शनल प्रोग्रामिंग लाइब्रेरी में बदलाव और इफ़ेक्ट फ्रेमवर्क के उदय का परिचय देते हुए, Node.js उद्योग में एक नया मानक स्थापित करने की संभावना का उल्लेख किया गया है।
Sunrabbit
Sunrabbit
Sunrabbit
Sunrabbit

July 30, 2024

[गैर-तकनीकी, डेवलपर बनकर कैसे बचे] 16. नए डेवलपर के लिए पोर्टफोलियो बनाने के टिप्सनए डेवलपर के पोर्टफोलियो को लिखने के टिप्स दिए गए हैं। प्रोजेक्ट के अनुभव और डेवलपमेंट फीचर को विस्तार से लिखना और यह स्पष्ट करना महत्वपूर्ण है कि किस तरह की सेवा विकसित की गई है।
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

April 3, 2024