क्या प्रत्येक जावा क्लास में शून्य-तर्क कन्स्ट्रक्टर होना चाहिए?क्या हमारे पास हमेशा कक्षा में शून्य-तर्क कन्स्ट्रक्टर होना चाहिए?
उत्तर
नहीं
यह कोई मतलब नहीं है, तो निर्माता के लिए किसी भी जानकारी की आपूर्ति तो आप एक शून्य तर्क निर्माता है की जरूरत नहीं है के बिना वर्ग का एक उदाहरण बनाने के लिए।
एक अच्छा उदाहरण java.awt.Color वर्ग है, जिसका सभी सीटीआर तर्कसंगत हैं।
एक और अच्छा उदाहरण के भीतर - अपरिवर्तनीय प्रकार के। –
@andy यह अपने आप का जवाब देने योग्य है। – Trillian
कोई प्रतिवाद उदाहरण: जावा बीन्स - http://en.wikipedia.org/wiki/Java_Beans#JavaBean_conventions –
नहीं, यह भावना हमेशा शून्य तर्क कंस्ट्रक्टर्स बनाने के लिए नहीं है, निम्न परिदृश्यों उदाहरण हैं जहां यह समझ में आता है कम से कम एक-कुछ-तर्क-निर्माता
- आवश्यक निर्भरता प्रदान करने के लिए उस वर्ग खुद नहीं बना सकते हैं।
- गुणों के लिए कोई समझदार डिफ़ॉल्ट नहीं हैं।
मामलों जहां है/एक शून्य तर्क निर्माता की जरूरत हैं:
- आप JavaBeans विनिर्देश के अनुपालन करने के लिए चाहते हैं (सरल डेटा वस्तुओं के लिए समझ में आता है)।
- सभी फ़ील्ड को समझदार डिफ़ॉल्ट का उपयोग करके प्रारंभ किया जा सकता है।
- आप उस ढांचे का उपयोग करना चाहते हैं जिसकी आवश्यकता है।
मेरी राय में शून्य-तर्क कन्स्ट्रक्टर रखने के लिए गलत तर्कों में से एक तर्कों की एक लंबी सूची है। इसके लिए सृजन के बाद एक सुरक्षित स्थिति में नहीं होने वाली ऑब्जेक्ट को प्रारंभ करने के लिए स्वीकार करने से बेहतर समाधान हैं:
- बिल्डर पैटर्न का उपयोग करना।
- निर्माता के माध्यम से एक उदाहरण कॉन्फ़िगर करने के लिए विशेष कंटेनर वस्तुओं प्रदान करें।
- कई निर्माताओं जहां हर एक के आधार तर्क सौंपा चूक नहीं हो सकता है कि आवश्यक पैरामीटर हैं प्रदान करें।
नहीं। हालांकि अपवाद हैं। उदाहरण के लिए, यदि आप अपनी कक्षा को केवल स्थिर उपयोग विधियों या सिंगलटन कक्षा या केवल स्थिरांक वाले वर्ग रखने का इरादा रखते हैं तो आपको निजी कन्स्ट्रक्टर बनाना चाहिए, जिसमें स्पष्ट रूप से तत्काल होने से रोकने के लिए कोई तर्क नहीं है।
के रूप में एंडी थॉमस-क्रेमर पहले ही उल्लेख किया गया है, यह भी असंभव है:
class NeedsToBeImmutable {
// For a class to be immutable, its reachable state
// MUST be reached through a final field
private final String stuff;
//!!Compile error!!
public NeedsToBeImmutable(){}
public NeedsToBeImmutable(String stuff){
this.stuff = stuff;
}
//getters...
}
हम हमेशा एक शून्य तर्क निर्माता है चाहिए? नहीं, क्या यह हमेशा संभव है? हाँ, लेकिन अक्सर अवांछित। सार्वजनिक ज़रूरतों के लिए Imututable() {सामान = "हैलो वर्ल्ड"} // कोई संकलन त्रुटि लेकिन बेकार – emory
- 1. क्या हमारे पास IENumerable
- 2. क्या कार्यक्षमता हमेशा तृतीय पक्ष होना चाहिए?
- 3. क्या हमारे पास बुलेटन
- 4. क्या हमारे पास edittext
- 5. हमेशा अंतिम और स्थैतिक लॉगर होना चाहिए?
- 6. क्या कक्षा कन्स्ट्रक्टर में पैरामीटर होना स्वीकार्य है?
- 7. अपरिवर्तनीय कक्षा अंतिम होना चाहिए?
- 8. क्या एक एसक्यूएल व्यू हमेशा 1 एनएफ में होना चाहिए?
- 9. क्या कक्षा में स्वयं का संग्रह होना चाहिए?
- 10. एएसपी .NET एमवीसी व्यूमोडेल कक्षा या संरचना होना चाहिए?
- 11. क्या हमें कक्षा में हमेशा एक डिफ़ॉल्ट कन्स्ट्रक्टर शामिल करना चाहिए?
- 12. क्या हमारे पास सी ++ में बंद है?
- 13. क्या एक टीडीडी परीक्षण हमेशा पहले विफल होना चाहिए?
- 14. क्या प्रतिशत प्रतीक (%) हमेशा HTML-escaped होना चाहिए?
- 15. क्या हमारे पास ब्राउज़र साइड प्रमाणीकरण
- 16. ओओ क्या होना चाहिए और क्या नहीं होना चाहिए?
- 17. में सार्वजनिक पैरामीटर रहित कन्स्ट्रक्टर होना चाहिए, है ना?
- 18. क्या मेरे पास एक समर्पित प्राथमिक कुंजी फ़ील्ड होना चाहिए?
- 19. क्या एक अद्वितीय_प्टर के पास एक नलप्टर मान होना चाहिए?
- 20. रेजर/सीएसएचटीएमएल - हमारे पास क्या लाभ है?
- 21. क्या हमारे पास Google मानचित्र API V3
- 22. क्या हमारे पास एकाधिक मदरप्रॉप माइक्रोडाटा टैगिंग
- 23. क्या विस्तार विधियों में उपसर्ग होना चाहिए?
- 24. हमारे पास बिजनेस लॉजिक लेयर (बीएलएल)
- 25. कन्स्ट्रक्टर में या कक्षा
- 26. क्या हमारे पास जावा में सी ++ में डिज़ाइन पैटर्न हैं?
- 27. जावा में कक्षा IOException एक अनचेक RuntimeException होना चाहिए?
- 28. क्या आईडी को पूरे पृष्ठ में अद्वितीय होना चाहिए?
- 29. हमारे पास जावास्क्रिप्ट में बंद क्यों है?
- 30. एनोटेशन विशेषता एक कक्षा शाब्दिक होना चाहिए? क्यूं कर? स्थिरांक भी ठीक होना चाहिए
केवल कुछ व्यवस्थाएं – Woot4Moo