"হ্যালো, অ্যামিগো! আমি আপনাকে সিরিয়ালাইজেশন সম্পর্কে আরও একটি সামান্য বিশদ বলতে চাই।"
ধরুন আমাদের ক্লাসে কিছু ইনপুটস্ট্রিমের একটি রেফারেন্স রয়েছে । তাহলে সিরিয়াল করা যাবে না, তাই না?
"ঠিক। আপনি নিজেই বলেছেন যে স্ট্রীমগুলিকে সিরিয়াল করা যায় না। এবং আপনি এমন একটি বস্তুকে সিরিয়ালাইজ করতে পারবেন না যেখানে অ-ক্রমিক ডেটা আছে।"
"ঠিক আছে। ঠিক তাই। কিন্তু যদি ক্লাস এমন ডেটা সঞ্চয় করে যা তার রাজ্যে গুরুত্বপূর্ণ ভূমিকা পালন করে না এবং তবুও ক্লাসটিকে সিরিয়ালাইজেবল ক্লাস হিসাবে বিবেচিত হতে বাধা দেয়? মনে করবেন না যে একটি ক্লাস অপ্রয়োজনীয় জিনিস সঞ্চয় করতে পারে। এটি এটি টস করতে পারে যেকোন সময় ডেটা এবং হতে পারে এটি সব সময় করে।"
এই ক্ষেত্রে, জাভার নির্মাতারা ক্ষণস্থায়ী কীওয়ার্ড নিয়ে এসেছেন। যদি আমরা সদস্য ভেরিয়েবলের আগে এই কীওয়ার্ডটি লিখি, তাহলে সিরিয়ালাইজেশনের সময় এটি উপেক্ষা করা হবে। এর রাষ্ট্র সংরক্ষণ বা পুনর্গঠন করা হবে না। যেন অস্তিত্বই ছিল না। আমরা এইমাত্র বিবেচনা করা পরিস্থিতিগুলির জন্য এটি কেবলমাত্র।
ক্যাশিং এবং উদ্বায়ী সংশোধক মনে রাখবেন? ব্যতিক্রম ছাড়া কোন নিয়ম নেই ।
এই সুখের একটি উদাহরণ এখানে:
একটি ভেরিয়েবল সহ একটি "বিড়াল" উদাহরণ যা সিরিয়ালাইজেশনে অদৃশ্য:
class Cat implements Serializable
{
public String name;
public int age;
public int weight;
transient public InputStream in = System.in;
}
GO TO FULL VERSION