যে ক্লাসগুলি সিরিয়ালাইজেবল প্রয়োগ করে তাদের কি কোন আর্গুমেন্ট কনস্ট্রাক্টর থাকতে হবে?

0
11888

না। এটি একটি সাধারণ ভুল ধারণা। ডিসিরিয়ালাইজেশন প্রক্রিয়া অবজেক্টের কনস্ট্রাক্টর ব্যবহার করে না - অবজেক্টটি কনস্ট্রাক্টর ছাড়াই ইনস্ট্যান্ট করা হয় এবং সিরিয়ালাইজড ইনস্ট্যান্স ডেটা ব্যবহার করে আরম্ভ করা হয়। প্রয়োগ করে এমন একটি শ্রেণীর জন্য কন্সট্রাক্টরের একমাত্র প্রয়োজনীয়তা Serializable উত্তরাধিকার সূত্রে প্রথম নন-সিরিয়ালাইজ করা যায় এমন সুপারক্লাসের একটি নো-আর্গুমেন্ট কনস্ট্রাক্টর থাকতে হবে। (আরো সম্পূর্ণ ব্যাখ্যার জন্য http://www.jguru.com/jguru/faq/view.jsp?EID=34802 দেখুন)। এটি বোধগম্য হয়: ডিসিরিয়ালাইজেশনের জন্য সমগ্র অবজেক্ট স্টেটকে পুনর্গঠন করতে হবে, যার মধ্যে যেকোনো সুপারক্লাসের অবস্থা অন্তর্ভুক্ত রয়েছে। যদি সুপারক্লাস নিজেই সিরিয়ালাইজেবল না হয়, তাহলে ডিসিরিয়ালাইজেশনের জন্য সেই সুপারক্লাসটিকে স্ক্র্যাচ থেকে ইনস্ট্যান্টিয়েট করতে হবে - এইভাবে প্রয়োজন। উদাহরণস্বরূপ, নিম্নলিখিত শ্রেণীর সাথে:

পাবলিক ক্লাস MySerializableClass সিরিয়ালাইজেবল প্রয়োগ করে {... }

তুমি কর না একটি নো-আর্গুমেন্ট কনস্ট্রাক্টর প্রয়োজন। MySerializableClass সমস্ত প্রয়োজনীয়তা পূরণ করে কারণ এটির প্রথম নন-সিরিয়ালাইজযোগ্য সুপারক্লাস, উদ্দেশ্য, একটি নো-আর্গুমেন্ট কনস্ট্রাক্টর আছে। নিম্নলিখিত উদাহরণে:

পাবলিক ক্লাস MyFirstClass { } পাবলিক ক্লাস MySecondClass প্রসারিত করে MyFirstClass প্রয়োগযোগ্য সিরিয়ালাইজেবল {... }

মাই ফার্স্টক্লাস ডিফল্ট, নো-আর্গুমেন্ট কনস্ট্রাক্টর আছে, তাই অন্য কোন কনস্ট্রাক্টরের প্রয়োজন নেই। তবে, যদি, মাই ফার্স্টক্লাস সংজ্ঞায়িত কনস্ট্রাক্টর যারা আর্গুমেন্ট গ্রহণ করে স্পষ্টভাবে একটি নো-আর্গুমেন্ট কনস্ট্রাক্টর ঘোষণা না করে, তাহলে আপনি একটি পাবেন সিরিয়ালাইজেবল ব্যতিক্রম নয় সিরিয়াল করার চেষ্টা করার সময় মাই সেকেন্ড ক্লাস.

প্রয়োগ করে এমন একটি বস্তুর জন্য সমস্ত প্রয়োজনীয়তা Serializable http://www.jguru.com/jguru/faq/view.jsp?EID=31434-এ তালিকাভুক্ত করা হয়েছে।