"नमस्कार, अमीगो! एली ने आपको जो बताया, मैं उसमें कुछ जोड़ना चाहूंगा।"

कभी-कभी आपको क्रमांकन प्रक्रिया को नियंत्रित करने की आवश्यकता होती है। यहाँ कुछ कारण दिए गए हैं:

1) वस्तु क्रमांकन के लिए तैयार नहीं है : इसकी वर्तमान आंतरिक स्थिति बदलने की प्रक्रिया में है।

2) एक वस्तु में गैर-धारावाहिक वस्तुएं होती हैं, लेकिन उन्हें एक ऐसे रूप में परिवर्तित किया जा सकता है जिसे आसानी से क्रमबद्ध किया जा सकता है , उदाहरण के लिए उन्हें बाइट सरणी या कुछ और के रूप में सहेजें।

3) एक वस्तु अपने सभी डेटा को एक इकाई के रूप में और / या क्रमांकन से पहले इसे एन्क्रिप्ट करना चाहती है।

कई कारण हैं कि आप मैन्युअल रूप से क्रमांकन क्यों करना चाहते हैं। लेकिन हम उन सभी फायदों को खोना नहीं चाहते हैं जो मानक क्रमांकन प्रदान करता है। आखिरकार, हमारी वस्तु अन्य वस्तुओं का उपयोग कर सकती है। लेकिन यदि हमारी वस्तु क्रमांकन का समर्थन नहीं करती है तो उन्हें क्रमबद्ध नहीं किया जा सकता है।

इस स्थिति का भी एक समाधान है: एक्सटर्नलाइज़ेबल इंटरफ़ेस। हमें जावा के दूरदर्शी रचनाकारों को धन्यवाद देना चाहिए। बस सीरियलाइज़ेबल इंटरफ़ेस को एक्सटर्नलाइज़ेबल इंटरफ़ेस से बदलें , और आपकी कक्षा सीरियलाइज़ेशन प्रक्रिया को मैन्युअल रूप से प्रबंधित कर सकती है।

एक्सटर्नलाइज़ेबल इंटरफ़ेस में दो विधियाँ होती हैं, जो सीरियलाइज़ेबल इंटरफ़ेस में नहीं होती हैं , जिन्हें जावा मशीन द्वारा तब कहा जाता है जब किसी ऑब्जेक्ट को क्रमबद्ध किया जाता है। यह कैसा दिखता है:

कोड
class Cat implements Externalizable
{
 public String name;
 public int age;
 public int weight;

 public void writeExternal(ObjectOutput out)
 {
  out.writeObject(name);
  out.writeInt(age);
  out.writeInt(weight);
}

 public void readExternal(ObjectInput in)
 {
  name = (String) in.readObject();
  age = in.readInt();
  weight = in.readInt();
 }
}

आपको कुछ याद दिलाता है?

"पवित्र मोली! इस तरह हमने क्रमांकन पर विचार करने से पहले वस्तुओं को बचाने की कोशिश की।"

"यह सब कुछ सरल बनाता है: यदि मानक क्रमांकन पर्याप्त है, तो हम केवल सीरियलाइज़ेबल इंटरफ़ेस को इनहेरिट करते हैं। यदि यह पर्याप्त नहीं है, तो हम एक्सटर्नलाइज़ेबल इनहेरिट करते हैं और अपने ऑब्जेक्ट को सेव/लोड करने के लिए अपना कोड लिखते हैं।"

"लेकिन क्या एक वर्ग को बाह्य रूप से चिन्हित किया जा सकता है जिसे धारावाहिक माना जा सकता है? क्या हम इस तरह के वर्ग का उपयोग अपने धारावाहिक वर्गों के संदर्भों को" सुरक्षित रूप से "संग्रहित करने के लिए कर सकते हैं?"

"हाँ। यदि कोई वर्ग Serializable या Externalizable लागू करता है , तो उसे क्रमबद्ध माना जाता है।"

"यह सही समाधान है। मुझे यह पसंद है।"

"मुझे यह सुनकर खुशी हुई। लेकिन इसमें और भी बहुत कुछ है... आपको प्रोफेसर हंस से सभी बारीकियों के बारे में पूछना चाहिए। वे निश्चित रूप से मौजूद हैं। वह आपको पढ़ने के लिए कुछ देना चाहते थे।"