मैं GregorianCalendar
उदाहरण सहित किसी ऑब्जेक्ट की गहरी प्रतिलिपि बनाने की कोशिश कर रहा हूं। मैं हमेशा clone()
का उपयोग करने से सावधान हूं और ऐसा लगता है कि यह यहां ओवरराइड नहीं हुआ है, इसलिए मैं सिर्फ फ़ील्ड द्वारा कॉपी फ़ील्ड कर रहा हूं।ग्रेगोरियन कैलेंडर को क्लोन करने का सबसे तेज़ तरीका?
GregorianCalendar newCalendar = new GregorianCalendar(oldCalendar);
दुर्भाग्य से मैं एपीआई में किसी भी ऐसी कार्यक्षमता नहीं मिल रहा है और कौन सी फ़ील्ड मैं एक प्राप्त करने की आवश्यकता पता लगाने की कोशिश अटक कर रहा हूँ: आदर्श रूप में, वहाँ एक प्रति निर्माता है, जो मुझे बहुत पसंद है इस्तेमाल कर सकते हैं होगा सटीक प्रति। तो, इन कैलेंडर में से किसी एक की प्रतिलिपि बनाने के लिए, आप इसे कैसे करेंगे? क्या मुझे यहां कुछ सरल शॉर्टकट याद आ रहा है?
मैं 'कारण है कि मैं कर रहा हूँ से बचने क्लोन पर काफी स्पष्ट नहीं था()'। इस मामले में मैं रक्षात्मक प्रतियां बनाने पर जोशुआ ब्लोच से सलाह का पालन कर रहा हूं। चूंकि क्लोन() अनुमानतः एक सबक्लास क्लोन() विधि को कॉल कर सकता है, इसलिए मैं एक गैर-साफ प्रति के साथ समाप्त हो सकता हूं। मेरे मामले में थोड़ा सा अकादमिक, लेकिन यही कारण है कि मैं इसे टाल रहा था। – wds
जैसा कि मैंने कहा था, कैलेंडर में डेटा इस समस्या से प्रभावित नहीं है - इसका सभी डेटा आदिम है। और 'कैलेंडर' में क्लोन विधि ठीक काम करती है। – Bozho
उनका मुद्दा यह है कि आप कल्पना कर सकते हैं कि एक उप-वर्ग जो मूल कैलेंडर उदाहरण का संदर्भ रखता है और उस संदर्भ को आसपास रखता है। यदि, कहें, सभी सेटर्स नए उदाहरण के बजाय मूल उदाहरण में मूल्य निर्धारित करेंगे, तो आपकी "गहरी" प्रतिलिपि अब समझौता की जाएगी। – wds