क्या जावा में सी ++ के रूप में एक डिफ़ॉल्ट प्रतिलिपि निर्माता है? यदि इसमें कोई है - क्या यह स्पष्ट रूप से उपयोग करता है अगर मैं एक और कन्स्ट्रक्टर (एक प्रतिलिपि नहीं) स्पष्ट रूप से घोषित करता हूं?क्या जावा में एक डिफ़ॉल्ट प्रतिलिपि निर्माता है (जैसे सी ++ में)?
उत्तर
जावा में कॉपी कन्स्ट्रक्टर में बुलेट-इन नहीं है।
लेकिन आप अपने स्वयं के ऐसे रचनाकार लिख सकते हैं। नीचे एक उदाहरण देखें:
class C{
private String field;
private int anotherField;
private D d;
public C(){}
public C(C other){
this.field = other.field;
this.anotherField = other.anotherField;
this.d = new D(other.d); //watch out when copying mutable objects; they should provide copy constructors, as well. Otherwise, a deep copy may not be possible
}
//getters and setters
}
class D{//mutable class
//fields
public D(D other){
//this is a copy constructor, like the one for C class
}
}
यह सही है। –
@RomanVottner विस्तृत करने के लिए, यह हमेशा आसान नहीं होता है, खासकर यदि आप उन क्षेत्रों में से किसी एक को नहीं बदल सकते हैं जो इसे कॉपी कॉपी करने वाला है। – Cruncher
जावा में एक डिफ़ॉल्ट प्रतिलिपि निर्माता नहीं है। आपको इसे स्वयं परिभाषित करने की आवश्यकता होगी।
नहीं, इसमें डिफ़ॉल्ट प्रतिलिपि निर्माता नहीं है। एक डिफ़ॉल्ट कन्स्ट्रक्टर।
आप अपने वर्ग के लिए किसी भी constructors प्रदान करने के लिए नहीं है, लेकिन आप सावधान जब ऐसा करने का होना चाहिए। कंपाइलर स्वचालित रूप से बिना किसी रचना के किसी भी वर्ग के लिए कोई तर्क, डिफ़ॉल्ट कन्स्ट्रक्टर प्रदान करता है। यह डिफ़ॉल्ट कन्स्ट्रक्टर सुपरक्लास के नो-तर्क कन्स्ट्रक्टर को कॉल करेगा। इस स्थिति में, अगर सुपर क्लास नो तर्क निर्माता नहीं है तो आप सत्यापित करना होगा कि यह करता है संकलक शिकायत करेंगे। यदि आपकी कक्षा में कोई स्पष्ट सुपरक्लास नहीं है, तो उसके पास ऑब्जेक्ट का एक अंतर्निहित सुपरक्लास है, जिसमें कोई तर्क-तर्ककर्ता नहीं है।
आमतौर पर मैं एक एक की तरह प्रदान करते हैं
public class CopyConEx {
/**
* Regular constructor.
*/
public CopyConEx(type field1, type field2) {
this.field1 = field1;
this.field2 = field2;
}
/**
* Copy constructor.
*/
public CopyConEx(CopyConEx aCopyConEx) {
this(aCopyConEx.getField1(), aCopyConEx.getField2());
}
एक प्रतिलिपि निर्माता (लेकिन नहीं डिफ़ॉल्ट एक) नहीं है, लेकिन यह कहा जाना चाहिए स्पष्ट (C++ में यह हूँ परोक्ष जब जरूरत कहा जा):
public MyClass(MyClass toCopy) {
someField = toCopy.someField;
}
जावा समर्थन क्लोनिंग लेकिन कॉपी कन्स्ट्रक्टर का उपयोग नहीं कर रहा है। कृपया जावा क्लोनिंग पर यूआरएल नीचे पाएं।
http://adtmag.com/articles/2000/01/18/effective-javaeffective-cloning.aspx
यदि आप किसी अन्य उत्तर को पढ़ते हैं, तो आप पाएंगे कि जावा कॉपी कॉपी कन्स्ट्रक्टर का समर्थन करता है। वे * डिफ़ॉल्ट * से नहीं हैं, डिफ़ॉल्ट रूप से 'क्लोन() 'से अधिक समर्थित है (आपको' क्लोनेबल 'लागू करना होगा और' क्लोन() 'स्वयं को परिभाषित करना होगा)। (और आपका लेख लगभग 14 वर्ष पुराना है ... यकीन नहीं है कि मैं अभी भी जावा 1.2 के दिनों में लिखी गई कुछ चीज़ों पर भरोसा रखूंगा।) – dcsohl
जैसा सी ++, जावा भी प्रतिलिपि निर्माता का समर्थन करता है। लेकिन, सी ++ के विपरीत, जावा एक डिफ़ॉल्ट प्रतिलिपि बनाने वाला नहीं बनाता है यदि आप अपना खुद का नहीं लिखते हैं।
इसके अलावा write a Copy Constructor using Deep copy.
सिर्फ जावा जोड़ने के लिए एक डिफ़ॉल्ट प्रतिलिपि नहीं है, इसके लिए बहुत आवश्यकता नहीं है सामान्य परिस्थितियों में। यह केवल जावा में संदर्भ से गुजरता है। – Anugoonj
देखने के जावा में एक स्वत: प्रतिलिपि निर्माता के प्रावधान व्यर्थ होगा।
जावा को एक की आवश्यकता नहीं है क्योंकि आपके पास केवल संदर्भ ऑब्जेक्ट्स के लिए हो सकते हैं। (सी ++ में आप वस्तुओं को मूल्य से गुजर सकते हैं ताकि व्याकरण को स्वचालित ऑब्जेक्ट प्रतिलिपि की अनुमति हो)।
यदि आपको जावा में ऑब्जेक्ट की गहरी प्रतियां लेने की आवश्यकता है, तो Cloneable
लागू करें।
- 1. क्यों संकलक डिफ़ॉल्ट प्रतिलिपि निर्माता
- 2. जावा में एक डिफ़ॉल्ट निर्माता की आवश्यकता है?
- 3. डिफ़ॉल्ट असाइनमेंट ऑपरेटर = सी ++ में एक उथली प्रतिलिपि है?
- 4. जेनेरिक्स डिफ़ॉल्ट निर्माता जावा
- 5. सी ++ खाका डिफ़ॉल्ट निर्माता
- 6. जावा: क्या String.Format जावा में मौजूद है जैसे सी #?
- 7. सी ++ क्यों वेक्टर प्रारंभ कर प्रतिलिपि निर्माता
- 8. प्रतिलिपि निर्माता
- 9. प्रतिलिपि निर्माता
- 10. क्या सी ++ में कोई सुविधा निर्माता है?
- 11. क्या जावा में सी # जैसे कीवर्ड फेंकता है?
- 12. क्या सी ++ में जावा प्रारंभिक ब्लॉक जैसे कोई निर्माण है?
- 13. हटाए गए प्रतिलिपि निर्माता (सी ++ 11)
- 14. डिफ़ॉल्ट निर्माता
- 15. जावा में प्रारंभिक सूचियां क्यों नहीं हैं जैसे सी ++ में?
- 16. सी ++ 11 में डिफ़ॉल्ट कार्यों में क्या बिंदु है?
- 17. क्या कक्षा को टाइपस्क्रिप्ट में एक निर्माता की आवश्यकता है?
- 18. सी ++ में एक गैर-तुच्छ कन्स्ट्रक्टर क्या है?
- 19. डिफ़ॉल्ट तर्कों के साथ प्रतिलिपि बनाने वाला निर्माता
- 20. कोक में एक निर्माता क्या है?
- 21. क्या सी # में एक "अज्ञात" जेनेरिक टैग है, जैसे '?' जावा में?
- 22. डिफ़ॉल्ट विधि में स्वत: निर्माता मिलान
- 23. जावा में 'सिस्टम डिफ़ॉल्ट पैकेज' क्या है?
- 24. सी में MalloC++ निर्माता
- 25. सी # में डिफ़ॉल्ट बूलियन मान क्या है?
- 26. में निजी और डिफ़ॉल्ट निर्माता सी ++ 11 और जीसीसी
- 27. एक सी में डिफ़ॉल्ट मान ++
- 28. जावा एक निर्माता
- 29. उलझाव से बुला प्रतिलिपि निर्माता
- 30. सी ++: गतिशील रूप से गैर-डिफ़ॉल्ट निर्माता
एक प्रतिलिपि निर्माता द्वारा, क्या आपका मतलब एक निर्माता है जो एक ही प्रकार की वस्तु स्वीकार करता है, और इसे डुप्लिकेट करता है? यदि हां - तो नहीं, जावा के पास ऐसा नहीं है। – Cruncher
नहीं, इसमें कोई डिफ़ॉल्ट प्रतिलिपि नहीं है। –
http://stackoverflow.com/questions/827785/why-doesnt-java-have-a-copy-constructor – Cruncher