जावा में एक सूची को कैसे सीरीज़ करें?


81

मैं एक सूची को गहरा करना चाहूंगा। उसके लिए हमारे पास एक विधि है

// apache commons method. This object should be serializable
SerializationUtils.clone ( object ) 

इसलिए अब अपनी सूची क्लोन करने के लिए मुझे इसे पहले परिवर्तनीय बनाना चाहिए। क्या सूची को अनुक्रमिक सूची में बदलना संभव है?

जवाबों:


166

java.util.Listपहले से लागू सभी मानक कार्यान्वयन java.io.Serializable

तो भले ही java.util.Listखुद की एक उप प्रकार नहीं है java.io.Serializable, यह करने के लिए सूची कास्ट करने के लिए सुरक्षित होना चाहिए Serializable, तुम्हें पता है जब तक कि यह की तरह मानक कार्यान्वयन में से एक है ArrayListया LinkedList

यदि आप निश्चित नहीं हैं, तो पहले सूची को कॉपी करें (जैसे कुछ का उपयोग करके new ArrayList(myList)), तो आप जानते हैं कि यह क्रमिक है।


1
कोई भी कभी भी सीरियल के लिए कुछ भी क्यों नहीं डालना चाहेगा? धारावाहिक केवल एक मार्कर इंटरफ़ेस है; Serializable के लिए कुछ कास्टिंग उपयोगी नहीं है।
जेस्पर

19
क्योंकि SerializationUtils.clone()प्रकार पर एक तर्क की आवश्यकता होती है Serializable, और इसलिए यदि आपका चर प्रकार का है List, तो आपको इसे डालना होगा।
स्केफमैन सेप

2
@ जैस्पर: यह एक मार्कर इंटरफ़ेस है जो कहता है कि यह कक्षा को क्रमबद्ध करने के लिए सुरक्षित है। एंड्रॉइड कई चीजों के लिए Serializable इंटरफ़ेस का उपयोग करता है; इरादे एक्स्ट्रा, साझा प्राथमिकताएं, आदि के साथ
गुजरना

11
हां, मुझे एंड्रॉइड समाधान खोजते समय यह प्रश्न मिला। मेरा जोड़ है, List<MyClass> myObjs = new ArrayList<MyClass>();पूरा नहीं करता है Serializable, लेकिन ArrayList<MyClass> myObjs = new ArrayList<MyClass>();करता है।
इवी सॉन्ग

2
@ एडम हस्ताक्षर के उपयोग के बजाय संकलन-समय पर सुरक्षा की गारंटी देना सबसे अच्छा हो सकता है <T extends List<Foo> & Serializable> setFooList(T list), जिसके लिए आपको अपने कॉलर को कुछ सूची कार्यान्वयन का उदाहरण देना होगा, जो कि धारावाहिक भी है।
थियोडोर मर्डॉक

32

जैसा कि पहले ही बताया जा चुका है, ज्यादातर मानक कार्यान्वयन Listधारावाहिक हैं। हालाँकि, आपको यह सुनिश्चित करना होगा कि सूची के भीतर संदर्भित / समाहित की गई वस्तुएँ भी धारावाहिक हैं।


1
जैसा कि पहले ही बताया गया है, Listएक ऐसा इंटरफ़ेस है जो ऐसा नहीं करता है Serializableया ऐसा कोई इंटरफ़ेस नहीं है। Lists जो क्रमबद्ध नहीं हैं, मानक पुस्तकालयों में सामान्य नहीं हो सकते हैं, लेकिन यह पहला वाक्य सही नहीं बनाता है।
arne.b

14

सूची सिर्फ एक इंटरफ़ेस है। सवाल यह है: क्या आपकी वास्तविक सूची कार्यान्वयन क्रमबद्ध है? जावा रन-टाइम से मानक सूची कार्यान्वयन ( ArrayList , LinkedList ) के बारे में बोलते हुए , उनमें से अधिकांश वास्तव में पहले से ही हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.