2010-08-09 10 views
7

अब मैं समझता हूं कि scala @serializable ऑब्जेक्ट्स जावा Serializable ऑब्जेक्ट के समान उपयोग किया जा सकता है। जावा Serializable ऑब्जेक्ट में ऑब्जेक्ट स्ट्रीम को बदलने के तरीके को बदलने के लिए ओवरराइड कर सकते हैं: writeObject (ऑब्जेक्टऑटपुटस्ट्रीम)/readObject (ऑब्जेक्टऑटपुटस्ट्रीम)।क्या आप स्ट्रीम लेखकों को स्कैला @ सेरियलज़ेबल ऑब्जेक्ट्स में ओवरराइड कर सकते हैं?

क्या आप स्केल @ serializable ऑब्जेक्ट में विधियों को ओवरराइड या इंजेक्ट कर सकते हैं जिससे आप ऑब्जेक्ट को क्रमबद्ध करने के तरीके को बदल सकते हैं?

+0

धन्यवाद! मैं विधि गलत हस्ताक्षर प्राप्त कर रहा था। –

उत्तर

8

हाँ, आप जावा में के रूप में स्काला में एक ही तरीके का उपयोग कर सकते हैं:

@throws(classOf[IOException]) 
private def writeObject(out: ObjectOutputStream): Unit = // ... 

@throws(classOf[IOException]) 
private def readObject(in: ObjectInputStream): Unit = // ... 
+0

readObject रिटर्न यूनिट। एक उदाहरण कार्यान्वयन क्या है जो एक वस्तु बनाता है? यह देखते हुए कि यह उदाहरण पर एक तरीका है? जावा में उदाहरण सभी को मानते हैं। कुछ प्रॉपर्टी मूल्यों को असाइन करने के लिए। यह वर्ग वर्गों पर अपरिवर्तनीय vals के साथ स्कैला में कैसे काम करता है? –

+0

@ स्कॉटस्मिथ मुझे संदेह है कि आप उत्परिवर्तनीय क्षेत्रों या कुछ वास्तव में बुरा प्रतिबिंब चाल का उपयोग कर फंस गए हैं। –

3

जैसा कि पहले ही कहा गया है, आप अपने खुद के writeObject और readObject तरीकों परिभाषित कर सकते हैं।

@throws(classOf[java.io.IOException]) 
private def writeObject(out : java.io.ObjectOutputStream) : Unit = /* your definition here */ 

हालांकि घोंसला वाले वर्गों, वस्तुओं या लक्षणों पर इसे निष्पादित करते समय सावधान रहें।

@serializable वर्ग फू (एक्स: इंट) { @serializable वस्तु X {def y = x} }

मैं वस्तु एक्स को क्रमानुसार हैं, तो यह वास्तव में युक्त फू वर्ग को क्रमानुसार जाएगा, तो यह जरूरी serializable भी हो। कस्टम सीरियलाइजेशन विधियों में निपटने के लिए यह एक पिटा हो सकता है, इसलिए यहां उचित चेतावनी दी गई है।

एक और दर्द बिंदु बंद serialization हो सकता है। सीरियलाइज्ड क्लोजर में किस चर को कैप्चर किया जा रहा है, इसका एक मानसिक मॉडल रखने की कोशिश करें। सुनिश्चित करें कि ये चर कुछ ऐसे हैं जो आप आईओ पर भेजना चाहते हैं!

संबंधित मुद्दे

 संबंधित मुद्दे