"হ্যালো, অ্যামিগো! এলি তোমাকে যা বলেছে তাতে আমি একটু যোগ করতে চাই।"

কখনও কখনও আপনাকে সিরিয়ালাইজেশন প্রক্রিয়া নিয়ন্ত্রণ করতে হবে। এখানে কিছু কারণ রয়েছে:

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();
 }
}

কিছু মনে করিয়ে দেবেন?

"পবিত্র মলি! আমরা সিরিয়ালাইজেশন বিবেচনা করার আগে আমরা বস্তুগুলিকে সংরক্ষণ করার চেষ্টা করেছি ঠিক এভাবেই।"

"এটি সবকিছুকে সহজ করে তোলে: যদি স্ট্যান্ডার্ড সিরিয়ালাইজেশন পর্যাপ্ত হয়, আমরা কেবল সিরিয়ালাইজেবল ইন্টারফেসটি উত্তরাধিকারী করি। যদি এটি পর্যাপ্ত না হয়, তবে আমরা আমাদের অবজেক্ট সংরক্ষণ/লোড করতে আমাদের নিজস্ব কোড লিখি।"

"কিন্তু বহির্মুখী চিহ্নিত একটি শ্রেণীকে কি সিরিয়ালাইজেবল বলে মনে করা হয়? আমরা কি আমাদের সিরিয়ালাইজেবল ক্লাসের রেফারেন্সগুলিকে "নিরাপদভাবে" সঞ্চয় করতে এই ধরনের ক্লাস ব্যবহার করতে পারি?"

"হ্যাঁ। যদি কোনো শ্রেণী সিরিয়ালাইজেবল বা এক্সটারনালাইজেবল প্রয়োগ করে , তাহলে এটি সিরিয়ালাইজেবল বলে বিবেচিত হয়।"

"এটি নিখুঁত সমাধান। আমি এটা পছন্দ করি।"

"আমি এটা শুনে খুশি। কিন্তু এটার আরও অনেক কিছু আছে... আপনার প্রফেসর হ্যান্সকে সব সূক্ষ্মতা সম্পর্কে জিজ্ঞাসা করা উচিত। সেগুলি অবশ্যই বিদ্যমান। তিনি আপনাকে পড়ার জন্য কিছু দিতে চেয়েছিলেন।"